Partial<Type>
用于构造一个Type下面的所有属性都设置为可选的类型,这个工具类型会返回代表给定的一个类型的子集的类型。
type Partial<T> = {
[k in keyof T]?: T[k]
}
Required<Type>
用于构造一个Type下面的所有属性全都设置为必填的类型,这个工具类型跟Partial相反。
type Required<T> = {
[k in keyof T]-?: T[k]
}
ReadOnly<Type>
用于构造一个Type下面的所有属性全都设置为只读的类型,意味着这个类型的所有的属性全都不可以重新赋值。
type Readonly<T> = {
readonly [k in keyof T]: T[k]
}
Mutable<Type>
用于构造一个Type下面的所有属性全都设置为非只读的类型,这个工具类型跟ReadOnly相反。
type Mutable<T> = {
-readonly [k in keyof T]: T[k]
}
Record<Keys, Type>
用于构造一个对象类型,它所有的key(键)都是Keys类型,它所有的value(值)都是Type类型。这个工具类型可以被用于映射一个类型的属性到另一个类型。
type Record<K extends keyof any, T> = {
[k in K]: T
}
Exclude<UnionType, Union>
用于构造一个类型,它是从UnionType联合类型里面排除了所有可以赋给ExcludedMembers的类型。
type Exclude<T, U> = T extends U ? never : T
Extract<Type, ExcludedMembers>
用于构造一个类型,它是从Type类型里面提取了所有可以赋给Union的类型。
type Extract<T, U> = T extends U ? T : never
Pick<Type, Keys>
用于构造一个类型,它是从Type类型里面挑了一些属性Keys(Keys是字符串字面量 或者 字符串字面量的联合类型)
type Pick<T, K extends keyof T> = {
[k in K]: T[k]
}
Omit<Type, Keys>
用于构造一个类型,它是从Type类型里面过滤了一些属性Keys(Keys是字符串字面量 或者 字符串字面量的联合类型)
type Omit<T, K> = Pick<T, Exclude<keyof T, K>>
ReturnType<Type>
用于构造一个含有Type函数的返回值的类型。
type ReturnType<T> = T extends (...args: any[]) => infer U ? U : any
Parameters<Type>
用于根据所有Type中函数类型的参数构造一个元祖类型。
type Parameters<T extends (...params: any[]) => any> = T extends (...params: infer P) => any ? P : never
NonNullable<Type>
用于构造一个类型,这个类型从Type中排除了所有的null、undefined的类型。
type NonNullable1<T> = Exclude<T, null | undefined>
type NonNullable2<T> = T extends null | undefined ? never : T
TypeScript 类型体操姿势合集,向大佬学习。
以上全部内容,如有疑问,欢迎指正。Good Luck!