为什么 Typescript 认为我的枚举未定义?

Rea*_*nkm 9 enums typescript reactjs redux

我正在使用 Typescript、Redux 和 React,所有这些对我来说都是新的,所以这可能有一个我没有看到的简单修复。

我有一个 actions.ts 文件,其中包含一个像这样的枚举:

export enum AnimalTypes {
    CAT = 'CAT',
    DOG = 'DOG'
}
Run Code Online (Sandbox Code Playgroud)

我将它导入到我的 reducers.ts 文件中,并试图在这样的日志语句中使用它:

import {AnimalTypes} from './actions';

export function someFunction() {
    // Print the word "CAT"
    console.log(AnimalTypes[AnimalTypes.CAT]);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试启动我的网站时出现以下错误:

TypeError: Cannot read property 'CAT' of undefined
  at someFunction (reducer.ts:5)
  at combineReducers.js:20
  etc.
Run Code Online (Sandbox Code Playgroud)

我的 IDE 没有给我任何错误,TSLint 也没有。我在网上阅读了一堆试图找到答案的文章,但最接近我的人是在他们的枚举中没有“export”关键字的人,而我有。

这里会发生什么?我会很感激任何帮助。

谢谢你。

编辑:这不是它有问题的反向映射,而是枚举的任何用法。这只是我能想到的最短用法。我实际上是在 switch 语句中使用它:

import {AnimalTypes} from './actions';

export function otherFunction(animal) {
    switch (animal.type) {
        case AnimalTypes.CAT:
            // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

当我构建上述代码时,出现此错误 Uncaught TypeError: Cannot read property 'CAT' of undefined

Chr*_*ton 2

打字稿的这一功能称为“反向映射”,根据文档,它仅支持数字枚举。这是来自https://www.typescriptlang.org/docs/handbook/enums.html的片段:

除了创建具有成员属性名称的对象之外,数字枚举成员还获得从枚举值到枚举名称的反向映射。

  • 在上面添加了一个更好的示例的说明。导致错误的不是反向映射。 (2认同)