我正在使用object.entries方法将一些JSON对象数据推送到一个数组中...它正在工作,现在我收到了错误:
'ObjectConstructor'类型中不存在属性'entries'。
我从类似的问题中了解到,这可能是因为我使用的打字稿版本不支持entries方法,但有替代方法吗?我不习惯改变版本等因为我是打字稿的新手。
Object.entries(data).forEach(([key, value]) => {
this.array.push ({
id: key,
name: value.name,
desc: value.desc})
});
感谢您的任何输入/帮助:)
答案 0 :(得分:3)
也许您正在使用不支持新功能的浏览器Object.entries
您应该从mdn安装以下" polyfill" :
if (!Object.entries)
Object.entries = function( obj ){
var ownProps = Object.keys( obj ),
i = ownProps.length,
resArray = new Array(i); // preallocate the Array
while (i--)
resArray[i] = [ownProps[i], obj[ownProps[i]]];
return resArray;
};
运行该代码后,{J}运行时应该可以使用Object.entries
,它应该修复错误
另外,您可以通过这种方式编写代码以提供不同的感觉
// gather the items
const items = Object.entries(data).map(([key, value]) => ({
id: key,
name: value.name,
desc: value.desc
}))
// append items to array
this.array = [...this.array, ...items]
答案 1 :(得分:0)
尝试将"esnext"
添加到libs
文件中的tsconfig.json
中,如下所示:
"lib": ["es2018", "dom", "esnext"]