泛型:任意类型好处:兼顾了灵活性和类型检查
泛型函数
function goTest<T>(s:T):T{ console.log(s) return s}goTest<string>("hello")goTest<number>(10)goTest<object>({name:"cheng"})
约束泛型
// 使用接口对泛型进行了拓展interface len{ length:number}function getLength<T extends len>(arr:T){ console.log(arr.length);}getLength<string>("hello");getLength({length:10});
泛型类
class NumList<T>{ public list:Array<T> = []; add(val:T){ this.list.push(val); }}var nums = new NumList<number>();nums.add(1);nums.add(2);console.log(nums)var strs = new NumList<string>();strs.add("html");strs.add("css");console.log(strs);// 函数-类
对象类型接口
// 对象类型接口interface attrs<T>{ name:T; age:T;}// 在声明变量的时候指明类型var obj:attrs<string,number> = {name:"lisi",age:10}