繁体   English   中英

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

[英]Using enum value as a type in Interface in typescript

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

declare enum MyEnumType {
   Member1,
   Member2,
}
interface Foo {
  prop1: MyEnumType,          // this is valid
  prop2: MyEnumType.Member1   // how about this? If not, why?
}

如果您在沙箱中运行此代码,您将收到一个错误:

Enum type 'MyEnumType' has members with initializers that are not literals.

仅当您declare枚举时它才无效。 在这种情况下,你告诉 TS 枚举存在,但你没有告诉它它的值是什么,因为这个枚举的定义可能是这样的:

enum MyEnumType {
  Member1 = 8,
  Member2 = 'RaNdOmWhAtEvEr'
}

这意味着MyEnumType.Member2不明确。 它会起作用,如果你

  1. 显式定义枚举(删除declare关键字)。 现在 TypeScript 完全控制了枚举,它知道它将为其键分配值01
  2. 明确告诉,声明的枚举的键是什么
declare enum MyEnumType {
  Member1 = 0,
  Member2 = 1
}

现在 TS 知道从枚举中期望什么,并且能够将其键作为类型进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM