一、基本使用
function show<T>(arg: T):T{ return arg;
}
let out = show<string>('xxxx');
let out = show('xxxx');//利用了类型推论//泛型变量function show<T>(arg: T[]):T{
console.log(arg.length); return arg;
}function show<T>(arg: Array<T>):Array<T>{
console.log(arg.length); return arg;
}//泛型类型function show<T>(arg: T):T{ return arg;
}
let myShow: <T>(arg: T) => T = show;//使用不同的泛型参数名let myShow: <U>(arg: U) => U = show;//使用带有调用签名的对象字面量let myShow: {<T>(arg:T) :T} = show;//泛型类class Person<T>{
value:T;
}
let p = new Person<number>;二、泛型约束
interface Lengthwise {
length: number;
}function show<T extends Lengthwise>(arg: T):T{
console.log(arg.length); return arg;
}//在泛型约束中使用类型参数function getProperty (obj: T, key: K){ return obj[key];
}
let x = {a:1,b2};
getProperty(x,"a");//在泛型里使用类类型function create<T>(c: {new(): T; }): T { return new c();
}
作者:大富_大贵
链接:https://www.jianshu.com/p/cb24259e25f5