泛型:软件工程中,要考虑代码重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型
泛型就是解决 类 接口 方法 的复用性、以及对不特定数据类型的支持(类型校验)
泛型可以支持不特定的数据类型 要求:传染的参数和返回的参数一致
泛型函数
// T 表示泛型,具体什么类型是调用这个方法的时候决定的 function getDate<T>(value:T):T{ return value; } getDate<number>(123); getDate<string>('123');
泛型类
class Min<T> { public list:T[] = []; constructor() { } add(value:T){ this.list.push(value); } min():T{ var minNum = this.list[0]; this.list.forEach((item)=>{ if(item < minNum){ minNum = item; } }) return minNum; } } var m = new Min<number>(); //实例化类 并且制定了类的T代表的类型是number m.add(4); m.add(6); m.add(8); alert(m.min()); //4
泛型接口
// 方式1 interface ConfigFn<T>{ (value:T):T; } function getData<T>(value:T):T{ return value; } getData<string>('Tom'); // 方式2 interface ConfigFn2{ <T>(value:T):T; } var getData2:ConfigFn2 = function<T>(value:T):T{ return value; } getData2<number>(12);