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接口将是最好的)
- TypeScript“保存时编译”function在Visual Studio 2015中不起作用
- 属性'toPromise'在types'Observable <Response>'上不存在
- 用于导入commonjs / amd模块的新的es6语法,例如`import foo = require('foo')`
- TypeScript是否允许types别名?
- angular度上传的文件
- ngSubmit以Angular 2forms刷新页面
- nodejs需要在TypeScript文件中
- 我如何使用/创builddynamic模板来编译dynamic组件与Angular 2.0?
- 如何从命令行运行TypeScript文件?