可辨识联合概述
- 具有共同的
可辨识特征
- 一个类型别名, 包含了具有共同的
可辨识特征
的类型的联合
关于什么是共同的可辨识特征如下:
// 正方形
interface Square {
// 共同的可辨识特征
kind: "square";
size: number;
}
// 长方形
interface Rectangle {
// 共同的可辨识特征
kind: "rectangle";
width: number;
height: number;
}
// 圆圈
interface Circle {
// 共同的可辨识特征
kind: "circle";
radius: number;
}
假如我现在要求如上这三个图形的面积,实现代码分别如下:
// 正方形
interface Square {
// 共同的可辨识特征
kind: "square";
size: number;
}
// 长方形
interface Rectangle {
// 共同的可辨识特征
kind: "rectangle";
width: number;
height: number;
}
// 圆圈
interface Circle {
// 共同的可辨识特征
kind: "circle";
radius: number;
}
type Shape = (Square | Rectangle | Circle);
function area(s: Shape) {
switch (s.kind) {
case "square":
return s.size * s.size;
case "rectangle":
return s.width * s.height;
case "circle":
// ** 是ES7中推出的幂运算符
return Math.PI * s.radius ** 2;
}
}
如上代码中的 Shape
就是一个 可辨识联合
:
- 因为: 它的取值是一个
联合
- 因为: 这个联合的每一个取值都有一个共同的
可辨识特征