【发布时间】:2016-09-22 18:56:17
【问题描述】:
这是来自here 的受歧视联合的官方示例。它不会通过ts-node 进行编译。错误信息是:
15.discriminated_unions.ts (29,33):找不到名称“从不”。 (2304)
15.discriminated_unions.ts (34,33):“Square |”类型上不存在属性“size”矩形 |圆圈'。 (2339)
但是在Typescript Playground中会顺利通过编译。
我错过了什么?有编译选项吗?
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 assertNever(x: never): never {
throw new Error("Unexpected object: " + x);
}
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;
default: return assertNever(s); // error here if there are missing cases
}
}
【问题讨论】:
标签: typescript