跳到主要内容

TypeScript 高级类型

本文介绍 TypeScript 类型系统的高级特性,用于构建可复用、表达力强的类型定义。

泛型函数与接口

泛型通过类型参数提高复用性,延迟类型确定到调用时,常用于集合、函数与组件。

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

interface Box<T> {
value: T;
}

条件类型

条件类型 T extends U ? X : Y 类似于三元表达式,根据类型关系选择结果。分布式条件类型会在裸类型参数上自动展开联合类型。

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

映射类型

映射类型基于已有类型批量转换属性,常见模式是 K in keyof T,可结合 readonly? 修饰符创建变体。

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

infer 关键字

infer 在条件类型的 true 分支中声明待推断的类型变量,常用于提取函数返回值、Promise 解包、数组元素等。

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

内置工具类型

TypeScript 内置多个常用工具类型:Pick<T, K>T 选取属性 K;Omit<T, K> 排除属性 K;Partial<T> 将所有属性变为可选;Required<T> 将所有属性变为必填;ReturnType<T> 获取函数返回值类型。

type UserPreview = Pick<User, 'id' | 'name'>;
type UserDraft = Partial<User>;