ts-node不会编译官方歧视联盟示例
问题描述:
以下是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
带来1.8编译器(见它在github package.json
)。您可以要求软件包作者更新到2.0编译器。
答
ts-node
会自动提取您当地的打字稿安装。因此,将最新的打字稿npm install [email protected] --save-dev
安装到您的项目中,然后从项目文件夹中运行ts-node
如果可用,ts-node会自动拾取本地编译器 – basarat