TypeScript for-in语句

TypeScript文档没有提到类似for或for-in的循环。 从使用语言来看,似乎在for循环中只支持任何或stringvariables。

为什么做出这个决定?

为什么不使用types信息并具有强types的迭代variables?

for-in语句实际上是枚举对象属性的,它是在TypeScript中实现的。 在数组上使用它有一些问题 。

我不能代表TypeScript团队发言,但我相信这是用语言实现的原因。

在Typescript 1.5及更高版本中,您可以使用for..of而不是for..in

 var numbers = [1, 2, 3]; for (var number of numbers) { console.log(number); } 

TypeScript并没有给你一把枪在脚下射击自己。

迭代器variables是一个string,因为它是一个string ,句号。 注意:

 var obj = {}; obj['0'] = 'quote zero quote'; obj[0.0] = 'zero point zero'; obj['[object Object]'] = 'literal string "[object Object]"'; obj[<any>obj] = 'this obj' obj[<any>undefined] = 'undefined'; obj[<any>"undefined"] = 'the literal string "undefined"'; for(var key in obj) { console.log('Type: ' + typeof key); console.log(key + ' => ' + obj[key]); } 

obj有多less个键/值对? 6,或多或less? 不,3,所有的键都是string:

 Type: string 0 => zero point zero Type: string [object Object] => this obj; Type: string undefined => the literal string "undefined" 

“打字稿显示”一书说

“您可以使用for或for..in循环迭代数组中的项目,如下所示:

 // standard for loop for (var i = 0; i < actors.length; i++) { console.log(actors[i]); } // for..in loop for (var actor in actors) { console.log(actor); } 

原来,第二个循环不会传递循环中的actor。 所以会说这显然是错误的。 可悲的是,它是如上所述,循环未经打字稿。

地图forEach经常帮助我,并由于打字稿增强function定义更适合,在当下lke:

 this.notes = arr.map(state => new Note(state)); 

我希望列表到Typescript:
1.通用集合
2.迭代器(IEnuerable,IEnumerator接口将是最好的)