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