【发布时间】:2022-01-09 06:47:31
【问题描述】:
我正在尝试实现将在 TypeScript 中返回字典的随机元素的代码。到目前为止,我已经尝试过:
dict = {
0: "example 1",
1: "example 2",
2: "example 3"
}
randomGen() {
var num = Math.floor(Math.random() * (3));
console.log(this.dict[num])
}
但是这给我一个错误:
元素隐式具有“any”类型,因为“number”类型的表达式不能用于索引类型“{ 0: string; 1:字符串; 2:字符串; }
有没有办法解决这个问题?如何从字典中随机选择一个元素?
【问题讨论】:
-
您可能必须将随机数类型转换为
0 | 1 | 2,我认为 TS 不可能在语义上分析代码,并且看到它只能产生这些值。 -
当我将 num 转换为字符串时,我得到了同样的错误。它说“元素隐式具有'any'类型,因为'string'类型的表达式不能用于索引类型'{0:string; 1:string; 2:string;}”当我运行控制台时出现。日志(this.dicty[num.toString()])
-
为什么不使用数组?
-
@Jesse 我可以,只是我需要的元素数量可能会变得杂乱无章。我只是发现它是字典格式时更容易阅读,但如果这不是一个选项,我将使用数组:)
标签: javascript angular typescript dictionary