TypeScript实用工具类型

305 阅读2分钟

Typescript提供了几种实用类型来方便常用的类型转换。这些工具类是全局有效的。

Awaited< Type >

这个类型用起来跟awaitasync函数中的效果一样,或者和Promise上的then方法一样。准确的来说就是,返回没有被Promise包装的类型。

例子

TypeScript: TS Playground - An online editor for exploring TypeScript and JavaScript (typescriptlang.org)

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类型中的nullundefined类型

例子

Parameters< Type >

函数的参数列表构造一个元组类型。如果是重载函数,那么会返回最后一个函数签名的参数列表。

例子

ConstructorParameters< Type >

从构造函数的类型返回一个元组或者数组,返回的是所有参数构成的一个元组或者数组(如果Type不是函数类型,啊么会返回never

例子

ReturnType< Type >

返回Type类型函数的返回类型。

如果是重载函数,那么会返回最后一个签名

例子

InstanceType< Type >

返回构造函数构造类型

例子

ThisParameterType< Type >

返回Typethis类型,如果函数没有this,则返回unknow

例子

OmitThisParameter< Type >

返回去除this参数之后的Type,如果Type没有明确声明this参数,那么只返回Type。话句话说,从Type创建了一个没有this参数的系类型。

例子

ThisType< Type >

这个工具不转化任何类型。它只用来表示上下文中的this类型.请注意,noImplicitThis必须被开启。

例子