07 类型工具

类型工具(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 提升灵活性。
  • 注意类型工具的嵌套使用,以保持类型定义的清晰性。