类的泛型
js
// 1、类的泛型基本语法
class DataBase<T> { // 定义泛型【与函数的泛型定义类似】
constructor(private data: T[]) {} // 接收一个T类型的数组
public getData(index: number): T { // 返回的类型也是T
return this.data[index]
}
}
let dataBase = new DataBase([1, 2, 3])
dataBase.getData(0)
// 2、泛型的继承(约束)
interface Item {
name: string
}
class DataBase<T extends Item> {
constructor(private data: T[]){} // 等价于{name: string}[]
public getData(index: number): string { // 里面的每一项(对象)都有name属性
return this.data[index].name
}
}
let dataBase1 = new DataBase([{name: 'tom'}])
let dataBase2 = new DataBase<{name: string, age: number}>([{name: 'tom', age: 18}])