typescript - 编译时未定义的 TypeScript 枚举

标签 typescript jestjs

我在 types.ts 中定义了一个枚举:

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 在被引用时没有定义。但是我在使用它之前从它的模块导出它并导入它...所以它应该被定义。

我发现其他类似的问题询问未定义的枚举,但他们似乎都在询问运行时。据我所知,这是一个编译时问题。

我不明白我会在这里做错什么。我在其他地方导入其他类型没有问题。但是这个枚举根本不想工作。这是怎么回事,我该如何解决?

最佳答案

好吧,这不是让它工作的方法,但是 this GitHub PR解释 ts-jest 将不支持像这样工作的枚举。我已将所有用途更改为(例如)("both"as Handedness) 并且它有效。所以,这不是一种解释,而是一种解决方法。

关于typescript - 编译时未定义的 TypeScript 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54310718/

相关文章:

reactjs - 将 PubSubJS 与 Jest/Enzyme 一起使用时,如何模拟 React 组件上的发布/订阅事件?

javascript - 如何用 Jest 测试 asnyc 代码(或用 jsdom 测试 "image.onload")

enums - Typescript 枚举,用于实现和接口(interface)

javascript - 使用 jest 15.1.1 的代码覆盖率 "Unknown"

mysql - 如何在 node.js 的 typescript-sequelize 中使用 'or' 选项?

html - Angular 2更改HTML元素的文本

javascript - Jest 中的 'it' 和 'test' 有什么区别?

javascript - 有没有办法用 Jest 模拟私有(private)函数?

javascript - Firestore where 语句与 array-contains 不起作用

angular - QueryList 更改订阅不起作用