Typescript常用内置工具类型(ts-built-in-utils)
Typescript常用内置工具类型
Record
定义对象的key与value类型
源码
1 | Record<key type, value type> |
Partial
生成新类型,该类型与T拥有相同的属性,所有属性变为可选
源码
1 | type Partial<T> = { |
Required
生成一个新类型,该类型与T拥有相同的属性,但所有属性皆为必选项
源码
1 | type Required<T> = { |
Readonly
生成一个新类型,T中所有属性变为只读,不能修改
源码
1 | type Readonly<T> = { |
Pick
生成一个新类型,返回T包含了K的属性集
源码
1 | type Pick<T, K extends keyof T> = { |
Exclude
如果T是U的子类型则返回never不是则返回T
源码
1 | type Exclude<T, U> = T extends U ? never : T |
示例
1 | type A = number | string | boolean |
Extract
与Exclude相反
源码
1 | type Extract<T, U> = T extends U ? T : never |
示例
1 | type A = number | string | boolean |
Omit
生成一个新类型,该类型拥有T中除了K属性意外的所有属性
源码
1 | type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>> |
NonNullable
从泛型T中排除掉null和undefined
源码
1 | type NonNullable<T> = T extends null | undefined ? never : T; |
示例
1 | type A = string | null | undefined |
Parameters
以元组的方式获得函数的入参类型
源码
1 | Parameters<T extends (...args: any) => any> |
示例
1 | type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never; |
ConstructorParameters
以元组的方式获得构造函数的入参类型
源码
1 | ConstructorParameters<T extends new (...args: any) => any> |
示例
1 | type ConstructorParameters<T extends new (...args: any) => any> = T extends new (...args: infer P) => any ? P : never; |
ReturnType
获得函数返回的类型
源码
1 | ReturnType<T extends (...args: any) => any> |
示例
1 | type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any; |
InstanceType
获得构造函数返回值的类型
源码
1 | InstanceType<T extends new (...args: any) => any> |
示例
1 | type InstanceType<T extends new (...args: any) => any> = T extends new (...args: any) => infer R ? R : any; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AresのBlog!