簡體   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