泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵话的功能。
在像c和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。这样 用户就可以以自己的数据类型来使用组件。
通俗理解,泛型就是解决类接口方法的复用性、以及对不特定数据类型的支持
下面这种就只能返回string类型的数据:
function getData(value:string):string{ return value; }
any放弃了类型检查,不管什么类型都可以
泛型
可以支持不特定的数据类型
要求:传入你的参数和返回的参数一致
T表示泛型,具体什么类型是调用这个方法的时候决定的
function getData<T>(value:T):T{ return value; } getData<number>(123);
泛型类:
比如有个最小的算法,需要同时支持返回数字和字符串两种类型。通过类的泛型来实现
class MinClass<T>{ public list:T[] = []; add(num:T){ this.list.pust(num); } min():T{ var minNum = this.list[0]; for(var i = 0;i<this.list.length;i++){ if(minNum>this.list[i]){ minNum = this.list[i]; } } return minNum; } } var m1 = new MinClas<number>(); var m2 = new MinClas<string>(); m1.add(1); m1.add(3); m2.add(a); m2.add(f);
泛型接口
第一种
interface configFn{ <T>(value1:T,value2:T):T; } var setData:configFn = function(value1:T,value2:string):T{ return value1+value2; } setData<string>(‘name’,‘张三’);
第二种
interface configFn<T>{ (value1:T,value2:T):T; } function getData<T>(value1:T,value2:string):T{ return value1+value2; } var myGetData:configFn<string> = getData; myGetData("20","23");