gpt4 book ai didi

javascript - TypeScript:尝试访问 Enum 时没有参数类型为 'string' 的索引签名

转载 作者:行者123 更新时间:2023-12-05 01:34:23 25 4
gpt4 key购买 nike

当我尝试使用作为字符串的变量 locale 访问 Enum Localization 中的值时出现此错误。

enum Localization {
'en-US' = '.com',
'pt-BR' = '.com.br',
'en-CA' = '.com.ca',
'en-AU' = '.com.au',
'en-IE' = '.com.ie',
'string' = 'string'
};
 const locale:string = 'pt-BR' //This value will come from DB.
const result = Localization[locale];

错误:元素隐式具有“任何”类型,因为类型“字符串”的表达式不能用于索引类型“typeof Localization”。在“typeof Localization”类型上找不到参数类型为“string”的索引签名。

error index typescript

在 Javascript 中正常工作。

     const Localization = {
'en-US': '.com',
'pt-BR': '.com.br',
'en-CA': '.com.ca',
'en-AU': '.com.au',
'en-IE': '.com.ie',
};

const locale = 'pt-BR';

console.log(Localization[locale]); // returns ".com.br"

我想知道:

1 - 如何将 Javascript 代码转换为在 TypeScript 中工作?
2 - 为什么 typescript 返回这个错误?
3 - 如果可能的话,我想要一些引用链接来阅读和理解为什么在 TypeScript 上出现这个错误。
4 - 在 TypeScript 中访问对象内部数据的更好方法是什么?

非常感谢。

最佳答案

下面至少适用于 map 类型,我看不出它为什么不能使用显式枚举类型。const result = Localization[locale as keyof typeof Localization];

来源reddit

关于javascript - TypeScript:尝试访问 Enum 时没有参数类型为 'string' 的索引签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63694784/

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