没有编译时枚举的TypeScript错误

时间:2014-01-13 15:26:48

标签: enums compiler-errors typescript

这对我来说很奇怪,但是当我写下类似的东西时,TypeScript 0.9.5编译器不会产生任何编译时错误:

enum A {
    a,
    b,
    c,
}

var x : A = 20;

比较C#编译器会引发以下错误: 无法将类型'int'隐式转换为'System.Security.AccessControl.AccessControlSections'。存在显式转换(您是否错过了演员?)

至于我,最好明确指定这样的演员:

var x : A = <A>20;

这是一个有意的设计,在某些用例中是必需的,还是这个错过了?

2 个答案:

答案 0 :(得分:2)

这是故意的。事实上,C#编译器知道你的意思(“你错过了演员吗?”)是有益的 - 一般来说,TypeScript在灵活性方面比严格性更容易犯错误。有些人希望在这里要求演员表演“以表明你的想法”;在这种情况下的假设是你总是在编程时思考,不应该被打扰,除非事情更明显是错误的。

答案 1 :(得分:0)

这是设计的。数字可以在没有强制转换的情况下分配给枚举,反之亦然。