for..in循环类型'string'上不存在属性

Igo*_*bak 0 typescript

该代码未编译(TypeScript v 2.9):

   class Foo {
      constructor(public key: string, public value: string) {
      }
    }

    const arr = new Array<Foo>();

    for (let foo in arr) {
          console.log(foo.key, foo.value)
    }
Run Code Online (Sandbox Code Playgroud)

这是TypeScipt操场上的相同代码:https ://www.typescriptlang.org/play/index.html#src=class%20Foo%20%7B%0D%0A%20%20constructor(public%20key%3A%20string% 2C%20public%20value%3A%20string)%20%7B%0D%0A%20%20%7D%0D%0A%7D%0D%0A%0D%0Aconst%20arr%20%3D%20new%20Array%3CFoo %3E()%3B%0D%0A%0D%0Afor%20(let%20foo%20in%20arr)%20%7B%0D%0A%20%20%20%20%20%20%20console.log(foo。键%2C%20foo.value)%0D%0A%7D

原因是:

在此处输入图片说明

为什么TypeScript认为变量是字符串的类型以及如何使用for..in循环来修复它?

Tit*_*mir 6

for-in 将迭代对象的键,以迭代数组使用 for-of

class Foo {
  constructor(public key: string, public value: string) {
  }
}

const arr = new Array<Foo>();

for (let foo of arr) {
      console.log(foo.key, foo.value)
}
Run Code Online (Sandbox Code Playgroud)