網站搜尋

angular - Enum 未定義


我有枚舉:

export enum Roles {
  user = 10,
  editor = 30,
  admin = 50,
}

我將它匯入到我的其中一個服務中:

import { Roles } from '../enums/roles';

並在服務方法中使用:

  this.writeRole(
    Roles.user,
  );

當我在應用程式中調用此方法時,控制台出現錯誤:Cannot read property 'user' of undefined

但是當我只是簡單地在服務中寫相同的 enum(但沒有 export 關鍵字)而不是導入時,它運作得很完美。請解釋,我做錯了什麼,為什麼我不能像導入類一樣導入 enum?

答案#1

這個錯誤通常與你的 IDE 有關:舉例來說 Visual Studio Code(我正在使用它,顯然你也是)

當你建立一個檔案時,VSCode 會將它加入索引。它允許你使用 CtrlP 打開檔案。

但是當你移動它時,VSCode 不會重新建立其索引。這意味著它從錯誤的位置導入你的文件。

它會按定義檢測到它,不會拋出任何錯誤(因為對他來說,他的索引是最新的),但在編譯時這個問題會浮現。

為了避免這種情況,你可以透過重新載入 VSCode 來重建索引(關閉它,或按下命令快捷鍵(F1)並輸入「reload」),或者你可以使用像 Move Typescript 這樣的外掛,它在移動檔案時非常有用。

答案#2

在你的服務/組件中 - 只需做「enum=Enum」:

roles = Roles