Enums TypeScript枚举之外的值没有错误

Enums TypeScript枚举之外的值没有错误,enums,typescript,Enums,Typescript,我希望这可能会产生编译时错误,但我想我只是误解了枚举的工作原理 enum SortDirection { ascending = 1, descending = -1 } type IndexSpec = {[index: string]: SortDirection}; var i: IndexSpec = {thing: 3}; // no compile time error 所有数值都被视为值枚举值 这是允许的,因为标志和非标志枚举之间没有区别: enum MyFl

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

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

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

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

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

enum MyFlags {
  Cool = 0x1,
  Awesome = 0x2,
  Neat = 0x4
}

var i: MyFlags = 5; // Cool | Neat

太好了,谢谢瑞安。我猜“因为标志枚举和非标志枚举之间没有区别”的答案在源代码中的某个地方暗示过,或者可能在中,但我只是错过了它。无论如何,谢谢你。你知道有什么方法可以达到我在这个问题上想要达到的目的吗?如果没有,不用担心:)再次感谢!在编译时,我想不出一种方法来确保枚举中有一个数字。如果使用枚举存在危险,最好不要使用数字文字。