問題

我有一個用例,我需要用相同的鍵宣告幾個文字列舉,例如:

 enum Title {
  ScreenA = 'screen A text',
  ScreenB = 'screen B text',
}

enum Content {
  ScreenA = 'Content A text',
  ScreenB = 'Content B text',
}
 

這些 Enums 在 Angular 模板中使用。

是否可以建立某種介面來確保當新螢幕出現所有列舉時?

我想要的是:

 SomeKindOfInterfaceForMyEnum {
  ScreenA: string,
  ScreenB: string,
  ScreenC: string,
}

enum Content uses SomeKindOfInterfaceForMyEnum  { ///<-- ERROR ScreenC is required
  ScreenA = 'Content A text',
  ScreenB = 'Content B text',
}
 

  最佳答案

有一些解決方案可以實現您想要做的事情,即擴充套件列舉。 GitHub上實際上有一個問題,給出了很多解決方案: https://github.com/Microsoft/TypeScript/issues/17592

其中一個解決方案是不使用enum但使用看起來像enum( https://github.com/Microsoft/TypeScript/issues/17592#issuecomment-375968511 )的東西

 const BasicEvents = {
  Start: 'Start' as 'Start',
  Finish: 'Finish' as 'Finish'
};
type BasicEvents = (typeof BasicEvents)[keyof typeof BasicEvents];

const AdvEvents = {
  ...BasicEvents,
  Pause: 'Pause' as 'Pause',
  Resume: 'Resume' as 'Resume'
};
type AdvEvents = (typeof AdvEvents)[keyof typeof AdvEvents];
 

其他解決方案是使用包含翻譯鍵的readonly變數的類.然後可以使用extends關鍵字.

希望它有幫助.

  相同標籤的其他問題

angulartypescript