[tslint]期望一个'for-of'循环而不是'for'循环这个简单的迭代(prefer-for-of)

Juk*_*uke 27 javascript for-loop visual-studio typescript tslint

我尝试解决它时,我的for循环有一个tslint错误,它说要转换为for-of.我见过很多文档,但它没有帮助.如何解决lint错误,我不能做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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*pel 50

它要求您使用如下格式.的of关键字遍历所述阵列的代替循环在阵列的索引中的对象.我假设它正在触发,因为你只是使用索引来获取数组中的值(可以使用of语法清除).

for (let row of this.rows) {
    if (!row.selected) {
        this.selectAllChecked = false;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

作为一个注释,您可以使用以下单行完成相同的事情:

this.selectAllChecked = this.rows.every(row => row.selected);
Run Code Online (Sandbox Code Playgroud)

  • @wutzebaer 目前我认为这是一个误报,因为“FileList”还不是一个可迭代的对象(尽管看起来他们正在计划根据规范中的注释进行更改:https://www.w3.org /TR/FileAPI/#filelist-section) (3认同)
  • @wutzebaer,这个问题已经存在了一段时间了(https://github.com/palantir/tslint/issues/2021)。看起来 TSLint 正在被弃用,取而代之的是 ESLint,因此解决此问题的长期策略是转变为使用它。在短期内,您可以使用注释语法禁用这些行的该规则。 (3认同)
  • 我在使用 FileList 时收到此错误,这是误报吗?因为我不能将 for..of 与文件列表一起使用 (2认同)

Nir*_*V S 8

我们可以在tslint.json里面添加规则:

"rules": {
    "prefer-for-of": false
}
Run Code Online (Sandbox Code Playgroud)

这将通过禁用相关的 lint 规则来解决该问题。