接口中是否有效使用了枚举?
declare enum MyEnumType {
Member1,
Member2,
}
interface Foo {
prop1: MyEnumType, // this is valid
prop2: MyEnumType.Member1 // how about this? If not, why?
}
答案 0 :(得分:1)
如果在沙箱中运行此代码,则会收到错误消息:
Enum type 'MyEnumType' has members with initializers that are not literals.
仅当您declare
枚举时,它才是无效的。在这种情况下,您告诉TS枚举存在,但是您不告诉它值是什么,因为这个枚举的定义可能是这样的:
enum MyEnumType {
Member1 = 8,
Member2 = 'RaNdOmWhAtEvEr'
}
这意味着MyEnumType.Member2
不明确。如果您
declare
关键字)。现在,TypeScript可以完全控制枚举,并且知道它将为其键分配值0
和1
declare enum MyEnumType {
Member1 = 0,
Member2 = 1
}
现在,TS知道枚举的含义,并且能够使用其键作为类型进行操作。