class DataM<T> {
constructor(private data: T[]) {}
getItem(index: number): T {
return this.data[index]
}
}
const data = new DataM<number>([1]);
data.getItem(0);
/************************************/
interface Item {
name: string;
}
class DataM_2<T extends Item> {
constructor(private data: T[]) {}
getItem(index: number): string {
return this.data[index].name
}
}
const data_2 = new DataM_2([{ // 这个对象一定要包含Item的属性
name: 'pw'
}]);
/*借助 extends 限定类型***********************************/
class DataM_3<T extends number | string> {
constructor(private data: T[]) {}
getItem(index: number): T {
return this.data[index]
}
}
const func: <T>(param: T) => T = <T>(param: T) => {
return param;
};