class DataManager { constructor(private data: string[] | number[]) { } getItem(index: number):string | number { return this.data[index] }}class DataManager<T> { constructor(private data: T[]) { } getItem(index: number):T { return this.data[index] }}const data = new DataManager<number>([1])const data = new DataManager([1])data.getItem(0)interface Item { name: string}class DataManager<T extends Item> { constructor(private data: T[]) { } getItem(index: number):T { return this.data[index].name }}const data = new DataManager([ { name: 'Jack' }])interface Test { name: string}class DataManager<T> { constructor(private data: T[]) { } getItem(index: number):T { return this.data[index] }}// 泛型对应的具体类型是Testconst data = new DataManager<Test>class DataManager<T extends number | string> { constructor(private data: T[]) {} getItem(index: number): T { return this.data[index] }}const data = new DataManager<string>([])
const func: <T>(param: T) => T = <T>(params: T) => { return params}