72 votes

[tslint]Attendu une boucle 'for-of' au lieu d'une boucle 'for' avec cette simple itération (prefer-for-of)

J'ai obtenu une erreur tslint dans ma boucle for lorsque j'essaie de la résoudre, il est demandé de la convertir en for-of. Comment puis-je résoudre l'erreur de lint et je ne peux pas faire 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;
    }
}

128voto

Daniel W Strimpel Points 5062

Il vous demande d'utiliser un format comme le suivant. Le site of boucle sur les objets du tableau au lieu de boucler sur les index du tableau. Je suppose qu'il se déclenche parce que vous n'utilisez l'index que comme moyen d'accéder à la valeur du tableau (qui peut être nettoyée à l'aide du mot-clé of syntaxe).

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

À titre d'information, vous pouvez accomplir la même chose en utilisant la phrase suivante :

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

2 votes

J'obtiens cette erreur avec une FileList, est-ce un faux positif ? Parce que je ne peux pas utiliser for..of avec les listes de fichiers.

3 votes

@wutzebaer pour le moment je pense que c'est un faux positif car FileList n'est pas encore un objet itérable (bien qu'il semble qu'ils prévoient de changer cela en se basant sur la note dans la spécification : w3.org/TR/FileAPI/#filelist-section )

1 votes

Avez-vous des suggestions sur la façon d'itérer sur une liste de fichiers sans se heurter à lint et en étant à l'épreuve du temps ?

8voto

En tslint.json que nous pouvons ajouter à l'intérieur des règles :

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

Cela résoudra le problème en désactivant la règle lint concernée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X