我在循环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
类型?
答案 0 :(得分:2)
for ... in
迭代对象的属性键。 for ... of
迭代数组的元素。请改用for ... of
。