ts节点不会编译官方的歧视联盟示例

时间:2016-09-22 18:56:17

标签: typescript

以下是来自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
    }
}

2 个答案:

答案 0 :(得分:2)

ts-node引入1.8编译器(请参阅github上的package.json)。您可以要求程序包作者更新到2.0编译器。

答案 1 :(得分:2)

ts-node会自动获取您当地的打字稿。因此,将最新的typescript npm install typescript@next --save-dev安装到项目中,然后从项目文件夹

运行ts-node