运营商&= 39; =='不能应用于类型字符串和数字

时间:2018-04-18 02:54:26

标签: typescript operator-keyword

如何检查数字的值?

for(var index in this.choicesDM) {
  if(index == 0) {
    this.currentChoice = this.choicesDM[index]
  }
}

我在问题的标题中收到了错误,如上所述。我还试图明确定义索引的类型。但是没有用。 找到了这个link,但没有得到解决方案。

2 个答案:

答案 0 :(得分:1)

这是因为==和其他相关比较运算符对具有相同类型或类型的1操作数的操作数进行操作应该是其他操作数的子类型。但在你的情况下,0是整数,“index”是字符串。因此错误。

答案 1 :(得分:1)

在JavaScript(以及TypeScript)中,in运算符返回一个字符串。这是因为for in循环遍历对象的键,这些键是JavaScript / TypeScript中的字符串。因此,当您比较index == 0时,index是一个字符串,而0是一个整数,因此就是错误。

注意我之前说过的,for in枚举对象的属性。对于数组,这也包括length属性之类的内容,因此使用for in循环数组通常是个坏主意。您可能想要的是for of循环,其中of为您提供数组中每个对象的值。