gpt4 book ai didi

javascript - Typescript 中的 const 枚举

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:14 25 4
gpt4 key购买 nike

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

export const enum Snack {
Apple = 0,
Banana = 1,
Orange = 2,
Other = 3
}

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

var snackIndex = UserSnack.type; // returning 0 in this example
var userSnack = Snack[snackIndex]; // would return 'Apple'

当我尝试类似的操作时,出现以下错误:

错误 TS2476:只能使用字符串文字访问常量枚举成员。

由于我从中接收数据的服务未返回字符串,因此我无法正常工作。

感谢任何帮助。

最佳答案

只需删除 const 修饰符即可。

枚举中的

const 表示枚举在编译期间被完全删除。 Const 枚举成员在使用站点内联。您不能通过任意值对其进行索引。换句话说,下面的 TypeScript 代码

const enum Snack {
Apple = 0,
Banana = 1,
Orange = 2,
Other = 3
}

let snacks = [
Snack.Apple,
Snack.Banana,
Snack.Orange,
Snack.Other
];

编译为:

let Snacks = [
0 /* Apple */,
1 /* Banana */,
2 /* Orange */,
3 /* Other */
];

与非常量版本比较:

enum Snack {
Apple = 0,
Banana = 1,
Orange = 2,
Other = 3
}

let Snacks = [
Snack.Apple,
Snack.Banana,
Snack.Orange,
Snack.Other
];

它被编译为:

var Snack;
(function (Snack) {
Snack[Snack["Apple"] = 0] = "Apple";
Snack[Snack["Banana"] = 1] = "Banana";
Snack[Snack["Orange"] = 2] = "Orange";
Snack[Snack["Other"] = 3] = "Other";
})(Snack || (Snack = {}));
let Snacks = [
Snack.Apple,
Snack.Banana,
Snack.Orange,
Snack.Other
];

来源:const enums @ typescriptlang.org

关于javascript - Typescript 中的 const 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40227401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com