Typescript提供了几种实用类型来方便常用的类型转换。这些工具类是全局有效的。
Awaited< Type >
这个类型用起来跟await
在async
函数中的效果一样,或者和Promise
上的then
方法一样。准确的来说就是,返回没有被Promise
包装的类型。
例子
Partial< Type >
把Type
的所有属性都设置成可选的。这个工具返回给定类型的所有子类型。
例子
Required< Type >
把Type
所有属性变为必选。和Partial
相反。
例子
Readonly< Type >
把Type
类型的所有属性都变成readoly
,代表返回的类型的所有属性
不能被重新赋值
这个工具
用来表示运行时赋值表达式会产生错误非常有用(例如被frozen object
被重新赋值的时候)
Object.freeze
function freeze<Type>(obj: Type): Readonly<Type>;
Record<Keys, Type>
构造一个对象类型
,键的类型是Keys
,值是Type
。这个工具
在映射一个类型到另一个类型时,非常有用。
例子
Pick<Type, Keys>
从Type
中,根据Keys
为属性,重新构造一个类型
例子
Omit<Type,Keys>
构造一个把Type
中所有Keys
都剔除的属性。跟Pick
相反。
例子
Extract<Type, Union>
构造一个从UnionType
类型中,剔除了所有ExcludedMembers
类型的类型
例子
Exclude<UnionType, ExcludedMembers>
构造一个排除了ExcludeMembers
的联合类型
。
例子
NonNullable< Type >
剔除Type
类型中的null
和undefined
类型
例子
Parameters< Type >
从函数
的参数列表构造一个元组类型
。如果是重载函数
,那么会返回最后一个函数签名
的参数列表。
例子
ConstructorParameters< Type >
从构造函数的类型返回一个元组
或者数组
,返回的是所有参数
构成的一个元组或者数组
(如果Type
不是函数类型
,啊么会返回never
)
例子
ReturnType< Type >
返回Type类型函数
的返回类型。
如果是重载函数,那么会返回最后一个签名
例子
InstanceType< Type >
返回构造函数
的构造类型
例子
ThisParameterType< Type >
返回Type
的this
类型,如果函数没有this
,则返回unknow
例子
OmitThisParameter< Type >
返回去除this
参数之后的Type
,如果Type
没有明确声明this
参数,那么只返回Type
。话句话说,从Type
创建了一个没有this
参数的系类型。
例子
ThisType< Type >
这个工具
不转化任何类型。它只用来表示上下文中的this
类型.请注意,noImplicitThis
必须被开启。
例子