Skip to content

类的泛型

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}])