【问题标题】:No error on value outside TypeScript enumTypeScript 枚举之外的值没有错误
【发布时间】:2015-12-14 15:36:22
【问题描述】:

希望这可能会产生编译时错误,但我想我只是误解了枚举的工作原理......

enum SortDirection {
    ascending = 1,
    descending = -1
}
type IndexSpec = {[index: string]: SortDirection};

var i: IndexSpec = {thing: 3};  // no compile time error

【问题讨论】:

    标签: enums typescript


    【解决方案1】:

    所有数值都被视为值枚举值。

    这是允许的,因为标志和非标志枚举之间没有区别:

    enum MyFlags {
      Cool = 0x1,
      Awesome = 0x2,
      Neat = 0x4
    }
    
    var i: MyFlags = 5; // Cool | Neat
    

    【讨论】:

    • 太棒了,谢谢瑞恩。我猜想“因为标志和非标志枚举之间没有区别”的答案隐含在源代码的某个地方,或者它可能在 language spec 中,但我只是错过了它。不管怎么说,还是要谢谢你。你知道有什么方法可以实现我在这个问题中想要实现的目标吗?如果没有,请不要担心:) 再次感谢!
    • 我想不出在编译时确保枚举中有一个数字的方法。如果有危险,最好不要在使用枚举时使用数字文字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多