Typescript 循环内部的类型脚本类型推断

Typescript 循环内部的类型脚本类型推断,typescript,Typescript,这看起来像是typescript编译器的问题,但不确定,可能我不理解typescript类型推断。谁能解释一下这个问题: 我有一个简单的代码,可以在“TypeAs”列表中执行一些操作。。当非常清楚列表的类型为“TypeA[]”时,变量“item”将获取类型“Any”。因此,要实现类型安全性和智能感知,我必须强制转换类型 var list: TypeA[] = this.getListOfTypeAs(); for (var item in list) { var

这看起来像是typescript编译器的问题,但不确定,可能我不理解typescript类型推断。谁能解释一下这个问题:

我有一个简单的代码,可以在“TypeAs”列表中执行一些操作。。当非常清楚列表的类型为“TypeA[]”时,变量“item”将获取类型“Any”。因此,要实现类型安全性和智能感知,我必须强制转换类型

    var list: TypeA[] = this.getListOfTypeAs();
    for (var item in list) {
        var typedItem = (<TypeA> item); //clearly a problem with typescript 
var-list:TypeA[]=this.getListOfTypeAs();
用于(列表中的var项){
var typedItem=(item);//显然typescript有问题

为什么?

因为Javascript的
for…in
迭代对象/数组的属性名,而不是属性值


因为Javascript的
for…in
迭代对象/数组的属性名,而不是属性值

如下所述:

for..in
语句以任意顺序迭代对象的可枚举属性

在TypeScript 1.5+中,您可以使用来迭代数组中的元素:

var list: TypeA[] = this.getListOfTypeAs();
for (let item of list) {
    // item is an element of list in here
}
在以前的版本中,您可以使用标准的
for
循环:

var list: TypeA[] = this.getListOfTypeAs();
for (var i = 0; i < list.length; i++) {
    var typedItem = item[i];
}
var-list:TypeA[]=this.getListOfTypeAs();
对于(变量i=0;i
如中所述:

for..in
语句以任意顺序迭代对象的可枚举属性

在TypeScript 1.5+中,您可以使用来迭代数组中的元素:

var list: TypeA[] = this.getListOfTypeAs();
for (let item of list) {
    // item is an element of list in here
}
在以前的版本中,您可以使用标准的
for
循环:

var list: TypeA[] = this.getListOfTypeAs();
for (var i = 0; i < list.length; i++) {
    var typedItem = item[i];
}
var-list:TypeA[]=this.getListOfTypeAs();
对于(变量i=0;i
谢谢。我明白了。所以,如果我理解了,仍然使用“in”,我的代码可以通过以下方式修复:for(列表中的var I){var typedItem=list[I];@pablolustondo不推荐这样做..谢谢。我明白了。所以,如果我理解了,仍然使用“in”,我的代码可以通过以下方式修复:for(列表中的var I){var typedItem=list[I]@Pablolustondo不推荐这样做。