在typescript中将枚举值用作接口中的类型

在typescript中将枚举值用作接口中的类型,typescript,enums,interface,Typescript,Enums,Interface,下面是接口中枚举的有效使用吗 declare enum MyEnumType { Member1, Member2, } 如果在沙箱中运行此代码,将出现错误: Enum type 'MyEnumType' has members with initializers that are not literals. 只有在声明枚举时,它才无效。在本例中,您告诉TS枚举存在,但不告诉它它的值是什么,因为此枚举的定义可能如下所示: enum MyEnumType { Member1 =

下面是接口中枚举的有效使用吗

declare enum MyEnumType {
   Member1,
   Member2,
}

如果在沙箱中运行此代码,将出现错误:

Enum type 'MyEnumType' has members with initializers that are not literals.
只有在
声明
枚举时,它才无效。在本例中,您告诉TS枚举存在,但不告诉它它的值是什么,因为此枚举的定义可能如下所示:

enum MyEnumType {
  Member1 = 8,
  Member2 = 'RaNdOmWhAtEvEr'
}
这意味着
MyEnumType.Member2
不明确。如果你愿意,它会起作用的

  • 显式定义枚举(删除
    declare
    关键字)。现在TypeScript完全控制了enum,它知道它将为其键分配值
    0
    1
  • 显式告诉,声明的枚举的键是什么
  • 现在TS知道从枚举中可以得到什么,并且能够将其键作为类型进行操作

    enum MyEnumType {
      Member1 = 8,
      Member2 = 'RaNdOmWhAtEvEr'
    }
    
    declare enum MyEnumType {
      Member1 = 0,
      Member2 = 1
    }