2016-09-22 72 views
0

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

回答

2

ts-node带来1.8编译器(见它在github package.json)。您可以要求软件包作者更新到2.0编译器。

+0

如果可用,ts-node会自动拾取本地编译器 – basarat

2

ts-node会自动提取您当地的打字稿安装。因此,将最新的打字稿npm install [email protected] --save-dev安装到您的项目中,然后从项目文件夹中运行ts-node