TypeScript 中的 For 循环

For loops in TypeScript

我在 tslint "prefer-for-of" 中找到一条规则后一直在研究,似乎大多数人都认为不应在 typescript 中使用标准 for 循环,但我找不到任何理由这是为什么。我知道可以使用 for(...of...) 和 for(...in...) 循环,但似乎标准 for 循环在某些情况下仍然有用。任何人都可以解释推理吗?这仅仅是为了可读性的目的,还是有任何性能影响可以使新样式更好?

________________EDIT______________

我做了更多的研究,决定看看渲染后的内容有什么不同 JavaScript,我发现这有点帮助。虽然标准 for 循环和 for(...in...) return 具有相同的值,但它们属于不同的类型并且 for(...of...) return 是数组中的实际值。所以,现在我看到了三种不同方法的区别,但我看不出除了可读性之外是否还有什么可以决定使用哪一种,这意味着我不知道 for(...of. ..) 在不需要索引的情况下,或者只是更容易阅读时,它比标准 for 循环的性能更高。

TypeScript Playground

我们使用 for … of 遍历数组,因为它已成为进行操作的通用方法。主要是JavaScript进化了。现在,一般可以迭代的东西是 Iterator.

使用迭代器,无法直接从其索引访问数据。但是我们仍然可以使用 for … of 循环。

一个例子:

const colors = new Map([
  [1, "red"], 
  [2, "green"], 
  [3, "blue"]
]);

for (colorName of colors.values())
  console.log(colorName)

结果将是:

red
green
blue

这里colors.values()returns an iterator,不是数组。无法使用索引访问其内容。

一些文档:Iterators and generators

关于性能,我建议this benchmark。传统的 for 循环比 for … of.

稍微好一点