【问题标题】:TSLint Error "Expected a 'for-of' loop instead of a 'for' loop with this simple iteration"TSLint 错误“在这个简单的迭代中,期望一个 'for-of' 循环而不是一个 'for' 循环”
【发布时间】:2019-01-24 14:54:03
【问题描述】:

我有一个 for 循环从数据库中获取 ID:

for(var i = 0; i < data.GetContractId.length; i++) {
    if (data.GetContractId[i].ContractId) {
        this.contractExists = true;
    }
}

现在我收到以下 TSLint 错误:

在这个简单的迭代中期望一个“for-of”循环而不是一个“for”循环

我不知道在这种情况下如何使用它,有人可以帮忙吗?

【问题讨论】:

  • 你能举一个data.GetContractId的结构例子吗?这是一个功能吗?是一个数组?一个单一的价值?一个对象?
  • @CalvinNunes GetContractID 是一个数组,它返回一个包含字段 ContractID 的对象
  • 然后是这样的:data.GetContractId = [{ContractId: 1}]?
  • 找到匹配后不要忘记break循环。
  • 我已经更新了我的答案并提议使用一些方法@bobdolan

标签: javascript typescript lint tslint


【解决方案1】:

TSLint 看到你可以使用 for-of 代替 for-loop 它只是增强和更清洁

for (let contract of data.GetContractId) {
  if (contract.ContractId) {
    this.contractExists = true;
    break;
  }
}

但是你可以在数组对象上使用some 方法

 this.contractExists  = data.GetContractId.some(contract => contract.ContractId);

some() 方法测试数组中是否至少有一个元素 通过提供的函数实现的测试。

some

【讨论】: