01 泛型

泛型(Generics) #

泛型允许在定义函数、接口或类时不指定具体类型,而在使用时再指定,提升代码复用性。

基本概念 #

泛型使用类型参数(如 )表示未知类型,在编译时进行类型检查。

使用场景 #

  • 创建可处理多种数据类型的函数或类,如数组操作。
  • 定义通用数据结构,如链表、栈。
  • 在库或框架中提供灵活的 API。

示例代码 #

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

let output = identity<string>("myString"); // string

class GenericNumber<T> {
  zeroValue: T;
  add: (x: T, y: T) => T;
}

最佳实践 #

  • 使用约束(如 extends)限制泛型类型。
  • 结合默认类型参数提供灵活性。
  • 避免过度泛化,保持类型安全。