【发布时间】:2020-12-06 22:37:52
【问题描述】:
我注意到如果我有一个由数字组成的枚举,那么基本上 TypeScripts 允许将任何数字分配给这种类型的变量:
enum EnumTestA {
foo = 1,
baz = 2
}
const testEnum1: EnumTestA = 4;
上面的编译就好了。为什么?
如果我尝试对字符串做同样的事情:
enum EnumTestB {
foo = "FOO",
baz = "BAZ"
}
const testEnum2: EnumTestB = "zzz";
然后它拒绝按预期编译它。
【问题讨论】:
-
不幸的是,支持位标志。 (如果我在其他人回答这个问题之前得到一台真正的计算机,我会详细说明)
-
@jcalz 请做。另外,有没有办法让这些数字枚举类型安全?
-
因此他们获得了位标志的注释并牺牲了数字枚举和位标志的类型安全性。对我来说,这听起来像是一个非常糟糕的决定。你可以说 C++ 也有同样的问题,做出了更明智的决定。
标签: typescript enums