TypeScript 的类型系统非常强大,因为它允许基于其他类型来表达类型。
这种思想最简单的形式是泛型(Generics)。此外,我们还可以使用多种多样的类型操作符。我们甚至可以根据已经拥有的值来表示类型。
通过结合各种类型操作符,我们可以以简洁、可维护的方式表达复杂的操作和值。在本节中,我们将介绍如何根据现有的类型或值来表达新类型。
- 泛型 (Generics) - 接收参数的类型
- Keyof 类型操作符 - 使用
keyof操作符创建新类型 - Typeof 类型操作符 - 使用
typeof操作符创建新类型 - 索引访问类型 (Indexed Access Types) - 使用
Type['a']语法访问类型的子集 - 条件类型 (Conditional Types) - 在类型系统中表现得像 if 语句的类型
- 映射类型 (Mapped Types) - 通过映射现有类型中的每个属性来创建类型
- 模板字面量类型 (Template Literal Types) - 通过模板字面量字符串修改属性的映射类型