TypeScript 的一些工具泛型
2021/05/27
先来看一下它们的源码:
Record
以 keyof 格式快速创建一个类型,此类型包含一组指定的属性且都是必填。
Partial
将类型定义的所有属性都修改为可选。
Readonly
将类型定义的所有属性改为只读。
Pick
从类型定义的属性中,选取指定一组属性,返回一个新的类型定义。
Exclude
从 T 中找出 U 中没有的元素(通俗来讲就是从 T 中排除 U )。
Extract
作用与 Exclude
相反,从 T 中找出 U 中有的元素(通俗来讲就是从 T 中取出 U )。
Omit
用 Pick
和 Exclude
进行组合, 忽略对象某些属性功能。
ReturnType
获取函数的返回类型。
理解 ReturnType
需要先来了解 infer
, infer
表示在 extends
条件语句中待推断的类型变量。
一个例子:
如果 T 能赋值给 (...args: infer P) => any
,则结果是 (...args: infer P) => any
类型中的参数 P,否则返回为 T。
再回到 ReturnType
,如果传入的是一个函数就返回函数的返回值的类型,否则返回 any
。