1. 泛型:任意类型
  2. 好处:兼顾了灵活性和类型检查

泛型函数

  1. function goTest<T>(s:T):T{
  2. console.log(s)
  3. return s
  4. }
  5. goTest<string>("hello")
  6. goTest<number>(10)
  7. goTest<object>({name:"cheng"})

约束泛型

  1. // 使用接口对泛型进行了拓展
  2. interface len{
  3. length:number
  4. }
  5. function getLength<T extends len>(arr:T){
  6. console.log(arr.length);
  7. }
  8. getLength<string>("hello");
  9. getLength({length:10});

泛型类

  1. class NumList<T>{
  2. public list:Array<T> = [];
  3. add(val:T){
  4. this.list.push(val);
  5. }
  6. }
  7. var nums = new NumList<number>();
  8. nums.add(1);
  9. nums.add(2);
  10. console.log(nums)
  11. var strs = new NumList<string>();
  12. strs.add("html");
  13. strs.add("css");
  14. console.log(strs);
  15. // 函数-类

对象类型接口

  1. // 对象类型接口
  2. interface attrs<T>{
  3. name:T;
  4. age:T;
  5. }
  6. // 在声明变量的时候指明类型
  7. var obj:attrs<string,number> = {name:"lisi",age:10}