Существует ли конструктор foreach в TypeScript, подобный реализации С#?
Мне очень нравится использовать конструкцию foreach
для "для циклов" на С#. Я считаю, что он очень чистый, эффективный и читаемый.
Есть ли подобная конструкция в 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
Да, for ... of
например.
for(let author of authors)
{
...
}
Поскольку вы используете TypeScript, это также работает в IE.
См. https://basarat.gitbooks.io/typescript/content/docs/for...of.html:
Для целей pre ES6 TypeScript будет генерировать стандарт для цикла (var я = 0; я < list.length; я ++).
В простом Javascript, поэтому без TypeScript, это не поддерживается в IE (source)
Обновление: для области видимости let
больше похоже на С#, чем var
. Обновлен пример.