这对我来说很奇怪,但是当我写下类似的东西时,TypeScript 0.9.5编译器不会产生任何编译时错误:
enum A {
a,
b,
c,
}
var x : A = 20;
比较C#编译器会引发以下错误: 无法将类型'int'隐式转换为'System.Security.AccessControl.AccessControlSections'。存在显式转换(您是否错过了演员?)
至于我,最好明确指定这样的演员:
var x : A = <A>20;
这是一个有意的设计,在某些用例中是必需的,还是这个错过了?
答案 0 :(得分:2)
这是故意的。事实上,C#编译器知道你的意思(“你错过了演员吗?”)是有益的 - 一般来说,TypeScript在灵活性方面比严格性更容易犯错误。有些人希望在这里要求演员表演“以表明你的想法”;在这种情况下的假设是你总是在编程时思考,不应该被打扰,除非事情更明显是错误的。
答案 1 :(得分:0)
这是设计的。数字可以在没有强制转换的情况下分配给枚举,反之亦然。