在Typescript中的const enum

add*_*dam 19 javascript enums typescript

我有一个使用Typescript的React应用程序.现在我遇到了const enum的问题.这是我的枚举:

export const enum Snack {
    Apple = 0,
    Banana = 1,
    Orange = 2,
    Other = 3
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试匹配的服务不​​是返回值,而是返回枚举中项目的索引.因此,例如,如果用户设置为在苹果上吃零食,则该服务为该用户而不是"Apple"返回0.理想情况下,我想做的事情如下:

var snackIndex = UserSnack.type; // returning 0 in this example
var userSnack = Snack[snackIndex]; // would return 'Apple'
Run Code Online (Sandbox Code Playgroud)

当我尝试类似的东西时,我收到以下错误:

错误TS2476:只能使用字符串文字访问const enum成员.

由于我收到数据的服务没有返回字符串,因此我遇到了解决这个问题的问题.

任何帮助表示赞赏.

Rya*_*ugh 26

const在枚举中意味着枚举被完全擦除,这意味着您无法通过任意值对其进行索引.只需删除const修饰符.

另请参见TypeScript中不同的枚举变体如何工作?

  • https://www.typescriptlang.org/play/#code/MYewdgzgLgBApmArgWxgYXNAok1BvAKBmJgDEBLAJ2hgF4YAiUgSWqgYBoiSBLOUMABM6jPgMGcCAXwIEEKGACU4Ac0QAbAIaUcCvDG7EKbEUyrRJJGGPDD6DG0MlSgA您将看不到“缺点”的值t enum` 声明 (2认同)