2017-10-04 28 views
16

C# içerisindeki "döngüler için" foreach yapısını kullanmayı seviyorum. Bence çok temiz, verimli ve okunabilir.C# uygulamasına benzeyen TypeScript'te bir foreach yapısı var mı?

TipScript'te benzer bir yapı var mı? Yerine bu Örneğin:

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); 
} 

Bunu yapmak istiyorum:

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();   
} 

cevap

20

Evet, for ... of

Ör

for(let author of authors) 
{ 
    ... 
} 

Çünkü TypeScript kullanıyorsanız, bu IE'de de çalışır. https://basarat.gitbooks.io/typescript/content/docs/for...of.html bakınız: önceden ES6 için

typescript için standart üretecektir hedef (var i = 0; i < list.length; i ++) döngünün tür. Typescript olmadan düz JavaScript yılında

, bu IE (source) içinde

Güncelleme desteklenmez: kapsamlaştırılması için var daha C# için let daha benzemektedir. Örneği güncellendi.

+2

Not .. 'için ..' JS [Iterables] ile kullanılabilir (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol), ES6 öncesi çeviri, _not_ ile çalışır. – Kroltan

+2

@Kroltan ayrıca, derleyicinin ES3 ortamlarında bile destek sağlayan bir “downlevelIteration” seçeneğine sahip olduğuna dikkat çekiyor. – Gerrit0