Partial

构造类型Type,并将它所有的属性设置为可选的。它的返回类型表示输入类型的所有子类型

Readonly

构造类型Type,并将它所有的属性设置为readonly,也就是说构造出的类型的属性不能被再次赋值

Record

  1. type Record<K extends string | number | symbol, T> = { [P in K]: T; }

Pick

从类型Type中挑选部分属性Keys来构造类型。

  1. type Pick<T, K extends keyof T> = { [P in K]: T[P]; }

Exclude

从类型Type中剔除所有可以赋值给ExcludedUnion的属性,然后构造一个类型。

  1. type Exclude<T, U> = T extends U ? never : T

Omit

从类型Type中获取所有属性,然后从中剔除Keys属性后构造一个类型。

  1. type Omit<T, K extends string | number | symbol> = { [P in Exclude<keyof T, K>]: T[P]; }

Extract

从类型Type中提取所有可以赋值给Union的类型,然后构造一个类型。

  1. type Extract<T, U> = T extends U ? T : never

NonNullable

从类型Type中剔除null和undefined,然后构造一个类型。

  1. type NonNullable<T> = T extends null ? never : T
  1. type T0 = NonNullable<string | number | undefined>; // string | number
  2. type T1 = NonNullable<string[] | null | undefined>; // string[]

Parameters

ConstructorParamerters

ReturnType

由函数类型Type的返回值类型构建一个新类型。

  1. type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any

InstanceType

Required

构建一个类型,使类型Type的所有属性为required。 与此相反的是Partial

  1. type Required<T> = { [P in keyof T]-?: T[P]; }

ThisParameterType

OmitThisParameter

ThisType