ObjectConstructor类型中不存在属性“条目”

时间:2018-05-02 20:49:22

标签: javascript

我正在使用object.entries方法将一些JSON对象数据推送到一个数组中...它正在工作,现在我收到了错误:

'ObjectConstructor'类型中不存在属性'entries'。

我从类似的问题中了解到,这可能是因为我使用的打字稿版本不支持entries方法,但有替代方法吗?我不习惯改变版本等因为我是打字稿的新手。

Object.entries(data).forEach(([key, value]) => {
                this.array.push ({
                        id: key,
                        name: value.name,
                        desc: value.desc})
            });

感谢您的任何输入/帮助:)

2 个答案:

答案 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"] 

请参见Typescript issue 30933