尽管while循环使用变量,但没有未使用的vars错误

时间:2019-12-15 21:55:58

标签: typescript tslint

在此示例中,函数声明了一个变量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

我的猜测是短绒棉正在抱怨,因为可能会出现大于3的指数。然后,while循环将永远不会执行,并且inComingColor将永远不会被使用。 (这实际上不会发生,因为这些Color []类型的长度限制为4)。

无论如何,而不必禁用在线错误,是否有一种整洁的方法来重构此功能,以使错误消失?

编辑:看起来棉短绒刚刚发出了无用的错误。我错了if语句不应使用赋值运算符:

if(inComingColor === cols[to.col][index]) {   // correct: error disappears

1 个答案:

答案 0 :(得分:2)

您需要在if检查之前分配它:

select pc.*
from product_company pc
where (
    select count(distinct pc1.price) 
    from product_company pc1 
    where pc1.companyName = pc.companyName and pc1.price > pc.price
) = 1

或者只是检查您为其分配的值:

        inComingColor = cols[to.col][index];
        if(inComingColor) {    // variable used here