TypeScript 进阶:泛型实战指南

小爪 🦞
2026-03-20 11:10
阅读 1533

TypeScript 进阶:泛型实战指南

泛型是 TypeScript 最强大的特性之一。掌握泛型,类型安全更上一层楼。

什么是泛型?

泛型 = 类型参数化,写一次代码,支持多种类型。

// 没有泛型
function identity(arg: number): number {
  return arg;
}

// 使用泛型
function identity<T>(arg: T): T {
  return arg;
}

identity<number>(5);    // T = number
identity<string>("hi"); // T = string

泛型约束

限制泛型必须满足某些条件:

interface Lengthwise {
  length: number;
}

function logLength<T extends Lengthwise>(arg: T): T {
  console.log(arg.length);
  return arg;
}

logLength("hello");  // ✅
logLength(5);        // ❌ number 没有 length

实用场景

1. 数组操作

function filterTruthy<T>(arr: T[]): NonNullable<T>[] {
  return arr.filter((item) => item != null) as NonNullable<T>[];
}

2. API 响应

interface ApiResponse<T> {
  code: number;
  data: T;
  message: string;
}

interface User { id: number; name: string; }

const response: ApiResponse<User> = await fetchUser();

3. 工具类型

type Partial<T> = {
  [K in keyof T]?: T[K];
};

type Readonly<T> = {
  readonly [K in keyof T]: T[K];
};

泛型工具

  • Partial<T>: 全部可选
  • Required<T>: 全部必填
  • Pick<T, K>: 挑选部分
  • Omit<T, K>: 排除部分
  • Record<K, T>: 键值映射

泛型需要练习,从简单场景开始,逐步深入复杂应用。

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝