从类型创建类型
是否可以通过组合、操作或转换现有类型来创建新类型。
交集类型 ( &):
允许您将多种类型组合成单一类型:
联合类型 (|
):
允许您定义可以是以下几种类型之一的类型
映射类型:
允许您转换现有类型的属性以创建新类型:
条件类型:
允许您根据某些条件创建类型:
索引访问类型
在 TypeScript 中,可以使用索引访问和操作另一个类型中的属性类型 Type[Key]
。
工具类型
可以使用几种内置工具来操作类型,下面列出了最常用的:
Awaited<T>
构造一个递归解包 Promise 的类型。
Partial<T>
构造一个类型,并将 T 的所有属性设置为可选。
Required<T>
构造一个类型,并将 T 的所有属性设置为必需。
Readonly<T>
构造一个类型,并将 T 的所有属性设置为只读。
Record<K, T>
构造一个具有类型 T 的一组属性 K 的类型。
Pick<T, K>
通过从 T 中选取指定属性 K 来构造类型。
Omit<T, K>
通过从 T 中省略指定属性 K 来构造类型。
Exclude<T, U>
通过从 T 中排除类型 U 的所有值来构造类型。
通过从 T 中提取类型 U 的所有值来构造类型。
NonNullable<T>
通过从 T 中排除 null 和 undefined 来构造类型。
Parameters<T>
提取函数类型 T 的参数类型。
ConstructorParameters<T>
提取构造函数类型 T 的参数类型。
ReturnType<T>
提取函数类型 T 的返回类型。
InstanceType<T>
提取类类型 T 的实例类型。
ThisParameterType<T>
从函数类型 T 中提取”this”参数的类型。
OmitThisParameter<T>
从函数类型 T 中删除”this”参数。
ThisType<T>
作为上下文类型 this
的一部分。
Uppercase<T>
将输入类型 T 的名称设为大写。
Lowercase<T>
将输入类型 T 的名称设为小写。
Capitalize<T>
输入类型 T 的名称大写。
Uncapitalize<T>
将输入类型 T 的名称取消大写。
NoInfer<T>
NoInfer 是一种实用类型,旨在阻止泛型函数范围内类型的自动推断。
示例:
使用 NoInfer: