2026年5月26日星期二No. 26
重启The Journal
返回目录
技术

TypeScript 高级类型技巧

深入理解 TypeScript 的高级类型系统,掌握条件类型、映射类型和模板字面量类型的使用技巧。


TypeScript前端

条件类型

条件类型是 TypeScript 类型系统中最强大的特性之一,它允许我们根据类型条件进行类型推断:

type IsString<T> = T extends string ? true : false;

type A = IsString<string>; // true
type B = IsString<number>; // false

infer 关键字

infer 关键字允许我们在条件类型中推断类型:

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

function getUser() {
  return { name: "张三", age: 25 };
}

type UserType = ReturnType<typeof getUser>;
// { name: string; age: number }

映射类型

映射类型可以基于已有类型创建新类型:

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

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

模板字面量类型

TypeScript 4.1 引入了模板字面量类型,让我们可以在类型层面操作字符串:

type EventName<T extends string> = `on${Capitalize<T>}`;

type ClickEvent = EventName<"click">; // "onClick"
type FocusEvent = EventName<"focus">; // "onFocus"

实际应用

这些高级类型技巧在实际项目中非常有用,比如:

  • 表单验证:利用条件类型实现类型安全的表单校验
  • API 类型:自动推断 API 响应类型
  • 状态管理:类型安全的状态和 action 定义

掌握这些技巧可以让你的 TypeScript 代码更加健壮和优雅。

Letters · 来信

评论

登录后即可发表评论,支持以下方式:

GitHub
微信
知乎
小红书