什么是泛型?

泛型(Generics)是 TypeScript 中实现类型安全代码复用的核心特性。它允许我们编写可适用于多种类型的组件,而无需牺牲类型检查的精度。

例如:

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

通过 <T> 定义类型参数,函数可以处理任意类型的数据,同时保持类型约束。

泛型语法基础

1. 类型参数声明

function createArray<T>(length: number, value: T): Array<T> {
  return Array(length).fill(value);
}
  • T 是类型参数的占位符
  • Array<T> 表示返回值的类型为 T[]

2. 泛型类

class Box<T> {
  private value: T;
  constructor(value: T) {
    this.value = value;
  }
  getVal(): T {
    return this.value;
  }
}

3. 泛型接口

interface Pair<T> {
  first: T;
  second: T;
}

泛型应用场景 ✅

  1. 数据处理工具
    sortArray<T>(arr: T[]): T[] 可统一处理数字、字符串等类型数组

  2. React 组件
    React.FC<Props> 中的 Props 可以是任意类型

  3. API 客户端

    interface APIResponse<T> {
      data: T;
      status: number;
    }
    

泛型最佳实践 ⚠️

  • 避免过度泛型化(如 any 类型)
  • 使用类型约束:function example<T extends string>(param: T)
  • 默认类型参数:function defaultArg<T = string>(value: T): T

深入学习推荐

想了解更多关于类型推断的高级用法?
👉 点击此处查看类型推断教程

typescript_generics