TypeScript中是否有类似于C#实现的foreach结构?

16

我非常喜欢在C#中使用foreach循环结构来代替"for循环"。我认为这种结构非常简洁、高效和易读。

TypeScript中是否有类似的结构呢?例如,是否有代替以下代码的结构:

setAuthorFilters(selectedAuthors)
{
    selectedAuthors.forEach(x => this.setAuthorFilter(x));
    this.updateUrl();        
}

setAuthorFilter(selectedAuthor)
{
    this.vm.SelectAuthors = this.vm.SelectAuthors.filter(x => x.id !== selectedAuthor.id);
    this.vm.PreviousSelectedAuthors = this.vm.CurrentSelectedAuthors.slice();
    this.vm.CurrentSelectedAuthors.push(selectedAuthor);
}

我想要做这个:

setAuthorFilters(selectedAuthors)
{
    foreach(var selectedAuthor in selectedAuthors)
    {
        this.vm.SelectAuthors = this.vm.SelectAuthors.filter(x => x.id !== selectedAuthor.id);
        this.vm.PreviousSelectedAuthors = this.vm.CurrentSelectedAuthors.slice();
        this.vm.CurrentSelectedAuthors.push(selectedAuthor);
    }
    this.updateUrl();        
}
1个回答

20
是的,for ... of 循环语句。
例如:
for(let author of authors)
{ 
  ... 
}
因为您正在使用TypeScript,所以这在IE中也可以工作。请参见:https://basarat.gitbooks.io/typescript/content/docs/for...of.html

对于 ES6 之前的目标,TypeScript 将生成类似于 for (var i = 0; i < list.length; i++) 的标准循环。

在纯JavaScript中,即没有TypeScript的情况下,在IE中不支持这个(来源
更新:对于作用域来说,let 更类似于 C#,而不是 var。已更新示例。

2
请注意,for .. of .. 可以与 JS 可迭代对象一起使用,而早于ES6的代码转换则无法正常运行。 - Kroltan
2
@Kroltan 还值得注意的是编译器有一个 downlevelIteration 选项,可以在 ES3 环境中启用支持。 - Gerrit0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接