【问题标题】:Inferred type in for each loop is wrong?每个循环的推断类型错误?
【发布时间】:2021-09-09 05:33:17
【问题描述】:

我有一个 MyClass[] 类型的成员变量 mine,并希望在我的一些函数中对其进行迭代。

一种简单的迭代方法是使用 TypeScript 的 for in 语法,for(let myClass in this.mine) {}。因此,myClass 的推断类型应该只是 MyClass

但是,当在 VS Code 中将鼠标悬停在 myClass 上时,它告诉我它的类型应该是 string,没有明显的原因。在 for 循环中,我似乎也无法使用 MyClass 类型的成员函数。

编译器/linter 是否会认为我想遍历我的数组的键,这些键可能是字符串,即使我实际上没有使用任何键?

什么可能导致此问题,我该如何解决?

【问题讨论】:

    标签: typescript for-loop types syntax


    【解决方案1】:

    没关系,正确的语法似乎是for(let x of arr) - of 而不是 in。有点混乱。

    来源:https://www.typescriptlang.org/docs/handbook/iterators-and-generators.html

    【讨论】:

    • 是的,for-in 循环遍历对象的键,对于数组来说,这恰好也是它的索引。 for-of 将循环遍历一个可迭代对象的实际值。
    猜你喜欢
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多