泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。它可以增加代码通用性。

泛型优点:

  • 函数和类可以支持多种类型,更加通用
  • 不必编写多条重载,冗长联合类型,可读性好 灵活控制类型约束
  • 不仅通用且能灵活控制,泛型被广泛用于通用库的编写。

使用泛型

  1. // 使用泛型
  2. interface Result<DataType> {
  3. ok: 0 | 1;
  4. data: DataType;
  5. }
  6. const data: Result<string> = {
  7. ok: 0,
  8. data: "hello world"
  9. };

泛型方法

  1. // 使用泛型
  2. interface Result<DataType> {
  3. ok: 0 | 1;
  4. data: DataType;
  5. }
  6. // 泛型方法
  7. function getResult<T>(data: T): Result<T> {
  8. return { ok: 1, data };
  9. }
  10. // 用尖括号方式指定T为string
  11. getResult<string>("hello");
  12. // 用类型推断指定T为number
  13. getResult(1);