jestjs - 在編譯時未定義的 TypeScript 列舉
我在 types.ts 中定義了一個枚舉(enum):
export enum Handedness {
Left,
Right,
Both,
}
export type State = {
count: number
handedness: Handedness
}
而我有一個物件正在 state.ts 中初始化:
import { State, Handedness } from './types'
export const initial: State = {
count: 0,
handedness: Handedness.Both
}
當我為這個專案執行測試(透過 jest)時,state.ts 產生錯誤 TypeError: Cannot read property 'Both' of undefined,告訴我在被引用時 Handedness 尚未定義。但我已經從其模組中匯出它,並在使用之前匯入它……所以它應該是已定義的。
我發現其他類似的問題都是在問未定義的枚舉,但它們似乎都是在詢問運行時。據我所知,這是一個編譯時問題。
我看不出我在這裡會做錯什麼。我在其他地方匯入其他類型都沒有問題。但這個列舉就是不想工作。這是怎麼回事,我該怎麼解決它呢?
答案#1
嗯,這不是讓這個運作的方法,但這個 GitHub PR 解釋了 ts-jest 不會支持像這樣運作的枚舉。我已經將所有的使用改為(例如)("both" as Handedness),這樣就可以運作了。所以,這不是一個解釋,而是一個變通方法。
答案#2
你也可以嘗試使用 const 列舉。
所以改變:
export enum Whatever { ... }
到
export const enum Whatever { ... }
顯然從 ts-jest 版本 23.10 開始,你就可以這麼做了。好得多!
