循环数组返回string类型的元素而不是数组的类型

时间:2017-11-02 09:29:55

标签: javascript arrays typescript

我在循环TypeScript数组时遇到问题。这些是方法:

getNotification(evt: string, rowIndex: number) {
    console.log("Production order: law has changed to " + evt + " " + rowIndex);
    var select = document.getElementsByName("ProductId-" + rowIndex);

    this.removeOptions(select);

    if ((evt != null) && (evt != "")) {
        let productsByLaw: IProduct[];

        productsByLaw = this.products.filter(x => x.lawId == +evt);
        for (let product in productsByLaw) {
            select.options[select.options.length] = new Option(product.name, product.productid);
        }
    }

}

removeOptions(selectbox : any) {
    var i;
    for (i = selectbox.options.length - 1; i >= 0; i--) {
        selectbox.remove(i);
    }
}

我不知道为什么这个Option(product.name, product.productid)会抛出这个错误:

  

错误TS2339(TS)属性'name'在'string'类型中不存在   错误TS2339(TS)属性'productid'在类型上不存在   '字符串'

为什么product是字符串而不是IProduct类型?

1 个答案:

答案 0 :(得分:2)

for ... in迭代对象的属性键for ... of迭代数组的元素。请改用for ... of