Partial
构造类型Type,并将它所有的属性设置为可选的。它的返回类型表示输入类型的所有子类型
Readonly
构造类型Type,并将它所有的属性设置为readonly,也就是说构造出的类型的属性不能被再次赋值
Record
type Record<K extends string | number | symbol, T> = { [P in K]: T; }
Pick
从类型Type中挑选部分属性Keys来构造类型。
type Pick<T, K extends keyof T> = { [P in K]: T[P]; }
Exclude
从类型Type中剔除所有可以赋值给ExcludedUnion的属性,然后构造一个类型。
type Exclude<T, U> = T extends U ? never : T
Omit
从类型Type中获取所有属性,然后从中剔除Keys属性后构造一个类型。
type Omit<T, K extends string | number | symbol> = { [P in Exclude<keyof T, K>]: T[P]; }
Extract
从类型Type中提取所有可以赋值给Union的类型,然后构造一个类型。
type Extract<T, U> = T extends U ? T : never
NonNullable
从类型Type中剔除null和undefined,然后构造一个类型。
type NonNullable<T> = T extends null ? never : T
type T0 = NonNullable<string | number | undefined>; // string | numbertype T1 = NonNullable<string[] | null | undefined>; // string[]
Parameters
ConstructorParamerters
ReturnType
由函数类型Type的返回值类型构建一个新类型。
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any
InstanceType
Required
构建一个类型,使类型Type的所有属性为required。 与此相反的是Partial。
type Required<T> = { [P in keyof T]-?: T[P]; }
