functionPropFn<T,KextendskeyofT>(obj:T,key:K):T[K]{ return obj[key] } let data=PropFn(objData,'isMan');//boolean let num=PropFn(objData,'num');//number let newStr=PropFn(objData,'bbt')//报错
泛型类 声明方法跟函数类似名称后面定义<类型>
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classSub<T>{ attr: T[] = []; add (a:T):T[] { return [a] } } let s = new Sub<number>() s.attr = [1,2,3] s.add(123) let str = new Sub<string>() str.attr = ['1','2','3'] str.add('123')
高阶方式
1 2 3 4 5 6 7 8 9 10 11
interface Data { name: string, age: number, isMan: boolean }
type Options<T extendsObject> = { [Key in keyof T]?: T[Key] }