Arrays 对于未输入的循环的类型
我在使用数组中的.entries来获取for of循环中的索引和值时遇到了一个问题Arrays 对于未输入的循环的类型,arrays,typescript,Arrays,Typescript,我在使用数组中的.entries来获取for of循环中的索引和值时遇到了一个问题 ranks: any = { total: 100, percentages: [ { percentage: 33 }, { percentage: 33 }, { percentage: 34 } ] }; g
ranks: any = {
total: 100,
percentages: [
{
percentage: 33
},
{
percentage: 33
},
{
percentage: 34
}
]
};
getMax(i: number){
var max: number = 100;
for (let [index,value] of this.ranks.percentages.entries()) {
console.log(index, value.percentage);
if(index !== i){
max -= value.percentage;
}
}
return max;
}
在这种情况下,永远不会记录控制台日志。我做了一个简单的例子,效果很好,所以我肯定遗漏了一些明显的东西
array = [
{ name:12 },
{ name:23 },
{ name:34 }
]
for (let [index, value] of array.entries()) {
console.log(index, value.name);
}
我通常会尝试console.log来解决这个问题,但我不确定应该记录什么或者如何使用断点,因为它跳过了它 TS将
for
语句编译为
for (var _i = 0, _a = ranks.percentages.entries(); _i < _a.length; _i++) {
for(var\u i=0,\u a=ranks.percentage.entries();\u i<\u a.length;\u i++){
迭代器的length
未定义,因此for循环成为no-op
换句话说,它似乎不知道entries()
正在生成一个iterable。您是否收到有关entries
的编译错误
如果编译到ES6,这是可行的
如果您只是想让代码正常工作,那么只需将其重写为基本for循环。TS将
for
语句编译为
for (var _i = 0, _a = ranks.percentages.entries(); _i < _a.length; _i++) {
for(var\u i=0,\u a=ranks.percentage.entries();\u i<\u a.length;\u i++){
迭代器的length
未定义,因此for循环成为no-op
换句话说,它似乎不知道entries()
正在生成一个iterable。您是否收到有关entries
的编译错误
如果编译到ES6,这是可行的
如果您只是想让代码正常工作,那么只需将其重写为基本for循环。看起来您可以将
entries
作为函数调用this.ranks.percentage.entries()
。那些括号不应该被省略吗?你有没有试着把for
循环放到try…catch
里面。我认为它应该抛出适当的异常。当我不使用括号时,它抛出一个异常将getMax放入try-catch中,什么都没有被发现。我不熟悉你在里面的所有冒号。什么是getMax(i:number)
应该是指?(vsgetMax(i)
)或ranks:any=
(vsranks=
)您可以链接到该语法的文档吗?看起来您将条目作为函数调用this.ranks.percentrates.entries()
。那些括号不应该被省略吗?你有没有试着把for
循环放到try…catch
里面。我认为它应该抛出适当的异常。当我不使用括号时,它抛出一个异常将getMax放入try-catch中,什么都没有被发现。我不熟悉你在里面的所有冒号。什么是getMax(i:number)
应该是什么意思?(vsgetMax(i)
)或ranks:any=
(vsranks=
)你能链接到该语法的文档吗?刚刚学习了所有这些,并采取了你概述的确切步骤。在一段时间没有得到编译错误后,开始得到编译错误,wtf TS,切换到基本的for循环,一切正常。刚刚学习了所有这些,并采取了你概述的确切步骤。之后开始得到编译错误有一段时间,wtf TS切换到基本的for循环,一切正常