| 对象形状 |
|---|
| T 的所有属性都变为可选。 | type Update = Partial<User> |
| T 的所有属性都变为必填。 | type Strict = Required<Opts> |
| T 的所有属性都变为只读。 | type Frozen = Readonly<User> |
| T 只保留 K 中的键。 | type Preview = Pick<User, "id" | "name"> |
| T 移除 K 中的键。 | type SafeUser = Omit<User, "password"> |
| 键为 K、值为 V 的对象。 | type Scores = Record<string, number> |
| 联合类型过滤 |
|---|
| 从联合类型 U 中移除可赋值给 X 的成员。 | type NoNull = Exclude<T, null> |
| U 中可赋值给 X 的成员。 | type OnlyStr = Extract<T, string> |
| T 移除 null 和 undefined。 | type Def = NonNullable<T> |
| 函数类型 |
|---|
| 由函数 F 的参数类型组成的元组。 | type P = Parameters<typeof fn> |
| 函数 F 返回的类型。 | type R = ReturnType<typeof fn> |
| 由构造函数 F 的参数类型组成的元组。 | type C = ConstructorParameters<typeof Date> |
| 构造函数 F 产生的实例类型。 | type D = InstanceType<typeof Date> |
| Promise 递归解析后得到的类型。 | type Data = Awaited<Promise<User>> |
| 字面量字符串转换 |
|---|
| 大写形式的字符串字面量 S。 | type A = Uppercase<"abc"> // "ABC" |
| 小写形式的字符串字面量 S。 | type B = Lowercase<"ABC"> // "abc" |
| 首字符大写的 S。 | type C = Capitalize<"abc"> // "Abc" |
| 首字符小写的 S。 | type D = Uncapitalize<"Abc"> // "aBc" |
| 相关关键字 |
|---|
| 对象类型 T 的属性键组成的联合类型。 | type K = keyof User |
| 值的类型,无需再写一遍。 | type Config = typeof defaults |
| 在条件类型内部捕获一个类型以供复用。 | type El<T> = T extends Array<infer I> ? I : never |
| 根据 T 是否可赋值给 U 来选择类型 X 或 Y。 | type IsStr<T> = T extends string ? true : false |