never類型與窮盡性檢查
never 表示不存在的狀態
interface Circle {
kind: "circle"
radius: number
}
interface Square {
kind: "square"
sideLength: number
}
interface Triangle {
kind: "triangle"
sideLength: number
}
type Shape = Circle | Square | Triangle // 增加Triangle類型,窮盡性檢查出問題。
function getArea(shape: Shape) { // 求面積
switch(shape.kind) {
case 'circle': // 圓形
return Math.PI * shape.radius ** 2
case 'square': // 方形
return shape.sideLength * 4
default: // 窮盡性檢查
const _exhaustiveCheck: never = shape
return _exhaustiveCheck
}
}