【发布时间】:2020-04-08 10:21:03
【问题描述】:
在这个例子中,一个函数声明了一个变量,inComingColor,然后这个变量在随后的 while 循环中使用。
priority(to: Position, cols: Color[][]) {
let index = to.index + 1;
let colorMatchCount = 0;
let inComingColor = cols[to.col][to.index]; // no-unused-vars error
while(index < 4) {
if(inComingColor = cols[to.col][index]) { // variable used here
colorMatchCount++;
index++;
} else return 0;
}
return colorMatchCount;
}
但是,在这个变量的实例化旁边会出现一个 tslint 错误:
'inComingColor' 被赋值但从未使用过
@typescript-eslint/no-unused-vars
我的猜测是 linter 提出这个投诉是因为可能会出现大于 3 的索引。然后 while 循环将永远不会执行,inComingColor 将永远不会被使用。 (这实际上不会发生,因为这些 Color[] 类型的长度上限为 4)。
不管怎样,不必禁用内联错误,有没有一种简洁的方法来重构这个函数,使错误消失?
编辑:看起来 linter 只是发出了一个无用的错误。我有一个错误。 if 语句不应该使用赋值运算符:
if(inComingColor === cols[to.col][index]) { // correct: error disappears
【问题讨论】:
-
不,您实际上从未使用过它。 if 语句只关心表达式的结果,这只是您分配给变量的值 (
cols[to.col][index])。您将其分配给变量的事实与 if 语句无关,因为您以后再也不会对它做任何事情,毫无意义。
标签: typescript tslint