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。