Typescript Utility Types 笔记

200 阅读1分钟

都是利用了泛型,概念上类似于返回类型的一个工具函数那样。所以也称为工具类型。

Partial<Type> 返回可选参数,在声明class的构建函数入参挺有用的

Required<Type> 所有可选参数转为必填参数

Readonly<Type> 所有参数转为只读

(下面的用的的keys类似这样 'a' | 'b' | 'c')

Record<Keys,Type> 类似字典,keys代表参数范围,type是每一个key索引后的返回类型,这玩意和之前自己写的一个泛型工具效果好像是一回事:

type __dynamic<K,V> = {
     [Property  in K]:V
}

Pick<Type, Keys>从type中提取指定键值返回新的类型

Omit<Type, Keys> 和Pick差不多,但是keys中是排除的键值

下面是针对联合类型的一些工具类型

Exclude<UnionType, ExcludedMembers> 从uniType中排除掉ExcludedMembers中的键值

Extract<Type, Union> 从Type中筛选出和Union重叠键值的属性

NonNullable<Type> 如果Typ有可能为null或者undefined,用这个可以排除

下面的输入类型为函数类型噢

Parameters<Type> 提取输入的函数的输入参数形成一个数组,这个数组索引n对应类型为函数第n个入参的类型。

ReturnType<Type> 提取输入函数的返回值类型

输入类型为一个类

ConstructorParameters<Type> 将Type视为构造函数,可以获取其new时的各参数类型作为类型。

InstanceType<Type>当入参为一个ClassX 类 时,T代表typeof ClassX,此时可用 InstanceType 得到其实例的类型。工厂函数中挺好用的。