【发布时间】:2012-10-18 08:51:58
【问题描述】:
TypeScript 文档没有提到像 for 或 for-in 这样的循环。从使用语言来看,for 循环似乎只支持 any 或 string 变量。
为什么会做出这个决定?
为什么不使用类型信息并拥有强类型迭代变量?
【问题讨论】:
标签: typescript
TypeScript 文档没有提到像 for 或 for-in 这样的循环。从使用语言来看,for 循环似乎只支持 any 或 string 变量。
为什么会做出这个决定?
为什么不使用类型信息并拥有强类型迭代变量?
【问题讨论】:
标签: typescript
在 Typescript 1.5 及更高版本中,您可以使用 for..of 而不是 for..in
var numbers = [1, 2, 3];
for (var number of numbers) {
console.log(number);
}
【讨论】:
TypeScript 不会给你一把枪来射你自己的脚。
迭代器变量是一个字符串,因为它是一个字符串,句号。观察:
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 现在有多少键/值对? 6、多还是少?不,3,所有的键都是字符串:
Type: string
0 => zero point zero
Type: string
[object Object] => this obj;
Type: string
undefined => the literal string "undefined"
【讨论】:
for-in 语句确实用于枚举对象属性,这就是它在 TypeScript 中的实现方式。还有一些issues with using it on arrays。
我不能代表 TypeScript 团队发言,但我相信这就是使用该语言实现的原因。
【讨论】:
edit 2018:这已经过时了,js 和 typescript 现在有 for..of 循环。
http://www.typescriptlang.org/docs/handbook/iterators-and-generators.html
“TypeScript Revealed”一书说
“您可以使用 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);
}
"
事实证明,第二个循环确实没有通过循环中的演员。所以会说这是完全错误的。遗憾的是,如上所述,打字稿没有触及循环。
map 和 forEach 经常帮助我,这是由于 typescripts 对函数定义的增强更容易接近,例如:
this.notes = arr.map(state => new Note(state));
我对 TypeScript 的愿望清单;
【讨论】: