这对我来说看起来很奇怪,但是当我编写如下内容时,TypeScript 0.9.5 编译器不会生成任何编译时错误:
enum A {
a,
b,
c,
}
var x : A = 20;
比较 C# 编译器会引发以下错误: 无法将类型“int”隐式转换为“System.Security.AccessControl.AccessControlSections”。存在显式转换(您是否缺少强制转换?)
对我来说,最好明确指定这样的转换:
var x : A = <A>20;
这是有意设计的并且在某些用例中是必需的还是只是被遗漏了?
最佳答案
这是故意的。事实上,C# 编译器知道您的意思(“您是否缺少强制转换?”),这一事实很有启发性——一般来说,TypeScript 会偏向于灵活性而不是严格性。有些人希望这里需要类型转换“以表明你考虑过这个问题”;这种情况下的假设是,您在编程时总是在思考,除非出现更明显的错误,否则不应该被打扰。
关于enums - 枚举没有编译时 TypeScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21094996/