javascript - [tslint]Förväntade en 'for-of'-slinga istället för en 'for'-slinga med denna enkla iteration (prefer-for-of)


Jag har fått ett tslint-fel på min for-loop och när jag försöker lösa det säger det att jag ska konvertera till for-of. Jag har sett många dokument men de är inte hjälpsamma. Hur kan jag lösa lint-felet och jag kan inte göra tslint:disable-next-line:prefer-for-of

for (let i = 0; i < this.rows.length; ++i) {
    if (!this.rows[i].selected) {
        this.selectAllChecked = false;
        break;
    }
}

Svar #1

Den ber dig att använda formatet som följande. Nyckelordet of loopar över objekten i arrayen istället för att loopa över indexen i arrayen. Jag antar att det triggas eftersom du bara använder indexet som ett sätt att nå värdet i arrayen (vilket kan förenklas med of-syntaxen).

for (let row of this.rows) {
    if (!row.selected) {
        this.selectAllChecked = false;
        break;
    }
}

Som en anmärkning kan du uppnå samma sak med följande enradare:

this.selectAllChecked = this.rows.every(row => row.selected);

Svar #2

I tslint.json kan vi lägga till inne i reglerna:

"rules": {
    "prefer-for-of": false
}

Detta kommer att lösa problemet genom att inaktivera den relevanta lint-regeln.

Relaterade artiklar