Typescript 工具泛型 #65
zhangyu1818
announced in
zh-cn
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
这些工具函数定义在
lib.es5.d.ts,我的typescript版本是3.5.2首先需要理解几个关键概念
keyof
keyof是typescript 2.1新增的关键字,keyof T返回的是T的属性名称(键名),keyof T的类型被认为是string的子类in
in可以遍历联合类型Mapped Types 映射类型
一个常见的任务是将一个已经存在类型中的所有属性变为可选
Person它的可选属性类型应该是:
应用映射类型,
PartialPerson可以写为Person的广义转换Partial
Partial就是上述映射类型的举例,能够将属性转为可选属性Required
将所有的属性转换为必选
在
Partial中,多了一个?,而这里是-?,它的意思是将?取掉,所以这里的每一个属性都是必选的Readonly
将所有属性变为只读属性
readonly表示只读属性,属性只能在初始化时赋值Pick
从
T中取出部分属性,K是必须是T的键名的子枚举Record
把
K类型转换为T类型这里需要注意的是
Record<K,T>的K必须是联合类型,需要写上keyofExclude
从
T中排除U中包含的类型Extract
从
T中提取包含U的属性Omit
构造一个类型,这个类型包含除了
T类型之外的K类型的属性NonNullable
从
T中去掉null和undefinedParameters
获取函数中的参数类型的元组
出现了一个新关键字
infer,infer可以表示extends语句中待推断的类型变量ConstructorParameters
获取构造函数中的参数类型的元组
ReturnType
获取函数返回值的类型
InstanceType
获取构造函数函数返回值的类型
这些内置工具函数的参数还是有一些不理解,有些是直接传类型,有些是传
keyof后的联合类型,有一些又是typeof,需要加省学习Beta Was this translation helpful? Give feedback.
All reactions