TypeScript 内置工具类型完全指南

TypeScript 内置工具类型是一系列全局可用的泛型类型,用于从现有类型派生新类型,提升类型操作效率和代码健壮性。
基础修饰类工具类型
Partial
将类型 T 的所有属性变为可选属性,适用于表单更新、部分数据操作场景。例如:

interface User { id: number; name: string; }
type PartialUser = Partial; // { id?: number; name?: string; }

Required
将类型 T 的所有属性变为必需属性,用于确保对象属性完整性。例如:

interface Config { apiUrl?: string; timeout?: number; }
type RequiredConfig = Required; // { apiUrl: string; timeout: number; }

Readonly
将类型 T 的所有属性变为只读属性,适用于保护配置对象不被修改。例如:

interface Todo { title: string; }
const todo: Readonly = { title: '学习' };
// todo.title = '新标题'; // 错误:无法分配到只读属性

结构挑选类工具类型
Pick
从类型 T 中选择指定属性 K 构造新类型,适用于数据脱敏、接口层 DTO 场景。例如:

interface User { id: number; name: string; email: string; }
type PublicUser = Pick; // { id: number; name: string; }

Omit
从类型 T 中排除指定属性 K 构造新类型,用于数据裁剪和避免敏感字段传输。例如:

interface User { id: number; name: string; password: string; }
type SafeUser = Omit; // { id: number; name: string; }

Record
构造键为 K、值为 T 的对象类型,适用于配置映射和权限控制:

type Role = 'admin' | 'user';
const permissions: Record = { admin: ['read', 'write'], user: ['read'] };

联合类型操作工具
Exclude
从联合类型 T 中排除可分配给 U 的类型:

type T = string | number | boolean;
type WithoutString = Exclude; // number | boolean

Extract
从联合类型 T 中提取可分配给 U 的类型:

type T = 'a' | 'b' | 'c';
type OnlyA = Extract; // 'a'

NonNullable
从类型 T 中排除 null 和 undefined:

type T = string | null | undefined;
type NonNullableT = NonNullable; // string

函数相关工具类型
ReturnType
提取函数类型 T 的返回值类型:

type Fn = () => { id: number };
type Return = ReturnType; // { id: number }

Parameters
提取函数类型 T 的参数类型元组:

type Fn = (a: number, b: string) => void;
type Params = Parameters; // [a: number, b: string]

ConstructorParameters
提取构造函数类型 T 的参数类型元组:

class User { constructor(id: number, name: string) {} }
type CtorParams = ConstructorParameters; // [id: number, name: string]

InstanceType
提取构造函数类型 T 的实例类型:

class User { id: number; name: string; }
type UserInstance = InstanceType; // User

这些工具类型基于 TypeScript 的泛型和条件类型实现,能够帮助开发者高效处理复杂的类型转换需求。


以上内容由AI生成