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;
};