多个类型要放在一起用时,可以加一个字段的方式来让编译器辨别类型。 示例来自ts官网。
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.height * s.width
case 'circle':
return Math.PI * s.radius ** 2
}
}
- 可以看到 s 已经被识别为Square类型。
- 对字段名称没有要求,改为 type 依然正常工作。