TypeScript 第六讲 ———— TypeScript 泛型

前言:
泛型:软件工程中,我们不仅要创建一致的定义良好的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");

 

上一篇:JavaScript语言对闭包的理解


下一篇:matlab中struct创建方法