为什么允许使用这段TypeScript代码:
const enum Foobar {
Foo = 0,
Bar = 1
}
let a: Foobar = 42;
const b: 42 = 42;
a = b;
我知道枚举可以是动态的。但我觉得不应该使用TypeScript控制流分析来允许这个例子。
答案 0 :(得分:2)
这是允许的,因为TS不区分bitflag和非bitflag枚举。
超出范围的值通常出现在bitflag枚举中:
const enum Foobar {
Foo = 0,
Bar = 1,
Baz = 2,
Qoo = 4
}
let a: Foobar = Foobar.Qoo | Foobar.Baz;
在这里,a
显然具有值6,但这并不明显违反枚举的意图。