【问题标题】:Undefined TypeScript enum at compile time编译时未定义的 TypeScript 枚举
【发布时间】:2019-01-23 06:31:30
【问题描述】:

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

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

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

【问题讨论】:

  • 我猜这是问题中的拼写错误,但您的State 类型中有okay 属性,然后在您的实例initial 中将其称为handedness。跨度>

标签: typescript jestjs


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多