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必须被开启。
例子