类型工具(Utility Types) #
TypeScript 提供了多种内置类型工具,用于简化常见类型操作,如修改属性可选性、挑选属性等。
基本概念 #
类型工具是预定义的泛型类型,帮助开发者快速创建新类型,而无需从头定义。常见工具包括 Partial、Required、Readonly、Pick、Omit、Record、Exclude、Extract 等。
使用场景 #
- 使对象属性可选或必选。
- 从现有类型中挑选或排除特定属性。
- 创建键值对对象类型。
- 类型排除或提取。
示例代码 #
interface Todo {
title: string;
completed: boolean;
}
// Partial: 所有属性可选
type PartialTodo = Partial<Todo>; // { title?: string; completed?: boolean }
// Required: 所有属性必选
type RequiredTodo = Required<PartialTodo>;
// Readonly: 所有属性只读
type ReadonlyTodo = Readonly<Todo>;
// Pick: 挑选属性
type PickTodo = Pick<Todo, 'title'>; // { title: string }
// Omit: 排除属性
type OmitTodo = Omit<Todo, 'completed'>; // { title: string }
// Record: 记录类型
type RecordType = Record<string, number>; // { [key: string]: number }
// Exclude/Extract
type Excluded = Exclude<'a' | 'b' | 'c', 'a'>; // 'b' | 'c'
type Extracted = Extract<'a' | 'b' | 'c', 'a' | 'd'>; // 'a'
最佳实践 #
- 结合实际需求选择合适的工具,避免自定义复杂类型。
- 在表单处理或 API 响应中,使用 Partial 和 Pick 提升灵活性。
- 注意类型工具的嵌套使用,以保持类型定义的清晰性。