泛型

@Generic
更多信息,请访问 TypeScript
Overview
定义函数、接口或类时使用 类型参数 T ,这些类型参数在使用时会被具体的类型替换 - 更灵活且类型安全的代码
用于创建可重用的组件和函数,同时保持类型安全
泛型函数
处理多种类型的函数,而不需要为每种类型编写单独的实现
一个函数可以定义多个泛型函数
//定义
function identity<T>(arg: T): T {
  return arg;
}

// 使用     
let output1 = identity("myString");
let output2 = identity(100);
泛型类
定义具有泛型类型的类
class GenericNumber<T> {
  zeroValue: T;
  add: (x: T, y: T) => T;

  constructor(zeroValue: T, add: (x: T, y: T) => T) {
    this.zeroValue = zeroValue;
    this.add = add;
  }
}

let myGenericNumber = new GenericNumber<number>(0, (x, y) => x + y);

console.log(myGenericNumber.add(5, 10)); // 输出: 15      
泛型接口
定义具有泛型类型的接口
interface GenericIdentityFn<T> {
  (arg: T): T;
}

function identity<T>(arg: T): T {
  return arg;
}

let myIdentity: GenericIdentityFn<number> = identity;

console.log(myIdentity(42)); // 输出: 42