TypeScript中向数组推入对象报错(expected ',' 1005)如何解决?
错误原因及解决方案
错误根源
你遇到的expected ',' 1005语法错误,核心原因是动态属性名的语法使用错误:
在JavaScript/TypeScript中,当用变量或表达式作为对象的属性名时,必须用**方括号[]**包裹这个表达式。你的代码里{elem.ElementIdentifier:5}的写法不符合语法规范,解析器无法识别elem.ElementIdentifier作为动态键,会将其拆解为无效标识符,因此抛出期待逗号的错误。
修正后的代码
第一步:修复动态属性名语法
把{elem.ElementIdentifier:5}改成{[elem.ElementIdentifier]: 5},用方括号包裹动态键表达式:
const arrOfObjects: any[] = []; const elems = [ { "ResultRow": "1", "ElementIdentifier": "A", }, { "ResultRow": "2", "ElementIdentifier": "B", }, ]; // 修复动态属性名语法 elems.map(elem => arrOfObjects.push({[elem.ElementIdentifier]: 5}));
第二步:优化遍历方式(可选但推荐)
map方法的设计目的是转换数组并返回新数组,你这里只是遍历执行push操作,用forEach更符合语义,避免产生不必要的空数组:
const arrOfObjects: any[] = []; const elems = [ { "ResultRow": "1", "ElementIdentifier": "A", }, { "ResultRow": "2", "ElementIdentifier": "B", }, ]; // 用forEach替代map,语义更清晰 elems.forEach(elem => arrOfObjects.push({[elem.ElementIdentifier]: 5}));
额外提示
你的elems数组最后一个元素后有多余尾逗号(当前JS/TS允许尾逗号,但保持代码整洁可去掉),不过这不是导致当前错误的原因。
内容的提问来源于stack exchange,提问作者Noob
相关产品推荐
相关产品推荐

