Enums 枚举没有编译时类型脚本错误

Enums 枚举没有编译时类型脚本错误,enums,compiler-errors,typescript,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

这对我来说很奇怪,但当我编写以下内容时,TypeScript 0.9.5编译器不会生成任何编译时错误:

enum A {
    a,
    b,
    c,
}

var x : A = 20;
要比较C#编译器,将引发以下错误: 无法将类型“int”隐式转换为“System.Security.AccessControl.AccessControlSections”。存在显式转换(是否缺少强制转换?)

对于我来说,最好明确指定此类强制转换:

var x : A = <A>20;
var x:A=20;

它是一种有意的设计,在某些用例中是必需的,还是被忽略了?

这是设计的结果。无需强制转换即可将数字分配给枚举,反之亦然。

这是有意为之。C#编译器知道您的意思(“您是否缺少强制转换?”)这一事实很有启发性——一般来说,TypeScript的错误在于灵活性而非严格性。有些人希望在这里需要一个演员阵容“表明你考虑过它”;这种情况下的假设是,您在编程时总是在思考,除非出现了更明显的错误,否则不应该被打扰。

似乎可以为此添加某种类型的TypeScript警告(如果您愿意,以后可以将其视为错误)