以下是来自here的受歧视联盟的官方示例。它不会通过ts-node通过编译。错误消息是:
15.discriminated_unions.ts(29,33):找不到名字'从不' (2304)
15.discriminated_unions.ts(34,33):物业'大小'类型' Square |中不存在矩形|圈&#39 ;. (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
}
}
答案 0 :(得分:2)
ts-node
引入1.8编译器(请参阅github上的package.json
)。您可以要求程序包作者更新到2.0编译器。
答案 1 :(得分:2)
ts-node
会自动获取您当地的打字稿。因此,将最新的typescript npm install typescript@next --save-dev
安装到项目中,然后从项目文件夹