以下是here歧视联盟的官方示例。它不会通过编译通过ts-node。错误消息是:ts-node不会编译官方歧视联盟示例
15.discriminated_unions.ts(29,33):找不到名称'从不'。 (2304)
15.discriminated_unions.ts(34,33):Property'size'在类型'Square |矩形|圈'。 (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
}
}
如果可用,ts-node会自动拾取本地编译器 – basarat