【问题标题】:No compile time TypeScript errors for enums枚举没有编译时 TypeScript 错误
【发布时间】:2014-01-13 15:26:48
【问题描述】:

这对我来说看起来很奇怪,但 TypeScript 0.9.5 编译器在我编写类似以下内容时不会产生任何编译时错误:

enum A {
    a,
    b,
    c,
}

var x : A = 20;

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

对我来说,最好明确指定这样的演员:

var x : A = <A>20;

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

【问题讨论】:

    标签: enums compiler-errors typescript


    【解决方案1】:

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

    【讨论】:

    • 为此添加某种 TypeScript 警告似乎很有用(如果您愿意,以后可以将其视为错误)
    【解决方案2】:

    这是设计使然。数字可以分配给枚举而不需要强制转换,反之亦然。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 2021-05-21
      相关资源
      最近更新 更多