运算符“==”不能应用于字符串和数字类型

Operator '==' cannot be applied to types string and number

如何查看数字的值?

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

在这里,我得到了 问题 标题 中提到的 错误。我还尝试明确定义索引的类型。但是没有用。 找到这个 但没有得到解决方案。

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

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

请注意我之前所说的,for in 枚举对象的属性。在数组的情况下,这还包括诸如 length 属性 之类的东西,因此使用 for in 遍历数组通常不是一个好主意。您可能想要的是 for of 循环,其中 of 为您提供数组中每个对象的值。