带你读《现代TypeScript高级教程》二、类型(2)https://developer.aliyun.com/article/1348569?groupCode=tech_library
13.交叉类型(Intersection Types)
交叉类型是将多个类型合并为一个类型。这让我们可以把现有的多种类型叠加到一起获得所需的能力。它被定义为 Type1 & Type2 & Type3 & ... & TypeN。它包含了所需的所有类型的成员。
interface Part1 { a: string;} interface Part2 { b: number;} type Combined = Part1 & Part2; let obj: Combined = { a: 'hello', b: 42,};
14.类型别名(Type Aliases)
类型别名是给一个类型起个新名字。类型别名有时和接口很相似,但可以作用于原始值,联合类型,交叉类型等任何我们需要手写的地方。
type MyBool = true | false; type StringOrNumber = string | number;
15.字符串字面量类型(String Literal Types)
字符串字面量类型允许你指定字符串必须的固定值。在实践中,这种类型常与联合类型、类型别名和类型保护结合使用。
type Easing = "ease-in" | "ease-out" | "ease-in-out"; class UIElement { animate(dx: number, dy: number, easing: Easing) { // ... }} let button = new UIElement(); button.animate(0, 0, "ease-in"); // OK button.animate(0, 0, "uneasy"); // Error: "uneasy" is not allowed here