跳到主要内容

工具类型与映射类型

标准库提供一批基于映射类型的工具;自己写映射类型则能定制「遍历键并变换」。

常用内置工具​

interface User {
id: number;
name: string;
email: string;
}

type PartialUser = Partial<User>; // 全可选
type IdName = Pick<User, "id" | "name">;
type WithoutEmail = Omit<User, "email">;
type RoleMap = Record<"admin" | "user", boolean>;
工具作用
Partial<T>属性变可选
Required<T>属性变必选
Readonly<T>属性变只读
Pick / Omit取子集 / 去掉键
Record<K, V>键值映射对象类型

映射类型​

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

keyof T 取出键的联合;in 遍历键。

键重映射(TS 4.1+)​

type Getters<T> = {
[K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];
};

as 子句可过滤键(映射到 never)或改名。

要点​

  1. 先查是否已有内置工具类型
  2. 映射类型 = 遍历 keyof 生成新形状
  3. 键重映射用于改名 / 过滤
  4. 别为业务 DTO 过度「类型体操」