TypeScript 工具类型使用总结
1 2 3 4 5 6 7 8
| interface IMyInfo { name: string age: number address: string money: number }
type BasicSelect = 'name' | 'age'
|
keyof
- 该操作符可以用于获取某种类型的所有键,其返回类型是联合类型。
- 例如:
1 2 3
| type koT = keyof IMyInfo
|
typeof
typeof
操作符可以用来获取一个变量声明或对象的类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| type naBasicT = 'name' | 'age'
const naData: Pick<IMyInfo, naBasicT> = { name: 'sss', age: 1 }
type naT = typeof naData
|
in
1 2 3 4 5 6 7
| type Keys = "a" | "b" | "c"
type Obj = { [P in Keys]: string }
|
extends
1 2 3 4 5 6 7 8
| type Len = { length: number }
function getLen<T extends Len> (arg: T) { return arg.length }
|
Pick
Pick<T, K>
K
可以是一个联合类型 从泛型T
中过滤出K
联合的类型,第一个参数是基准,第二个参数是需要选择出来的类型的联合,或者单个类型
1 2 3 4 5 6
| type pickT = Pick<IMyInfo, BasicSelect>
|
Partial
1
| type partialT = Partial<IMyInfo>
|
Required
1
| type requiredT = Required<partialT>
|
Readonly
Readonly<T>
将泛型变为 readonly
1
| type readonlyT = Readonly<IMyInfo>
|
Record
1 2 3 4 5 6 7
| type recodeT = Record<BasicSelect, IMyInfo>
|
Exclude<T, U>
其中 T
,U
比较,排除U
和T
中共有,返回T
中剩下的 返回的是第一个泛型 第一个作为基准
1 2 3 4 5 6 7 8
| type T1 = 'a' | 'b' | 'c' | 'm' type T2 = 'b' | 'c' | 'd'
type excludeT = Exclude<T1, T2>
type extractT = Extract<T1, T2>
|
Omit
Omit<T, K>
跟Pick
类似,但是功能相反 从T
中排除掉K
的类型
1 2 3 4 5 6 7 8
| type omitT = Omit<IMyInfo, 'age'>
|
ReturnType
1 2 3 4 5 6 7 8 9 10 11 12 13
| function userinfo () { return { age: 25, name: 'jack' } }
type ObjT = ReturnType<typeof userinfo>
|
Parameters
1 2 3 4 5 6 7 8 9 10 11
| type fnT = { (name: string, age: number): { breif: string } }
type TParams = Parameters<fnT>
function getInfo (name: TParams[0], age: TParams[1]) {}
|