类型“ObjectConstructor”上不存在属性“entries”

2023-12-10

我正在研究 ng2 的实现。我使用以下函数调用将对象转换为数组:

var authors = Object.entries(responseObject.Authors);

这是一个标准的js函数。但是,ts 编译器返回以下错误:

"Property 'entries' does not exist on type 'ObjectConstructor'"

根据快速谷歌搜索,解决方案似乎是将compilerOptions目标属性从es5更改为es6。然而,在对上一期进行了一些研究之后,我认为我可以通过在下面的 tsconfig.json 中包含额外的“lib”属性来利用 es6 功能:

  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "module": "commonjs",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "outDir": "../Scripts/",
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "moduleResolution": "node",
    "lib": [
      "es2015",
      "dom"
    ]
  }

我还尝试将目标属性更改为 es2015,然后重建项目并执行“typescriptUsingTsConfig”,但我仍然遇到相同的错误。知道我可以在这里做什么来利用Object.entries()功能?


你说得非常正确,改变target是错误的方法并正在改变lib是正确的方法,但是您指定了错误的语言版本。根据MDN, Object.entries被正式添加到ES2017规范中。

"lib": ["es2017"]

因此您必须指定*。

如果您想添加only方法的声明Object函数是added inES2017,TypeScript 允许你指定更细粒度的值.

"lib": ["es2017.object"]

正如 Alexander Bird 所指出的,默认情况下,"lib"选项取决于指定的值"target"如果存在的话。

例如:

"target": "es2017"

会导致相应的前缀"lib.*"默认情况下包含在内,除非"lib"被明确指定。

请注意,您可能希望添加实现本身的填充,比如这个,以确保这在较旧的运行时中有效。

Note:作为替代方案,您可以指定任何更高版本

"lib": ["es2020"]

或者自然地甚至

"lib": ["esnext"] 

最后将包括 TypeScript 语言已知的最新标准库功能的声明。由于它代表一个移动目标,因此应谨慎使用此选项,因为根据定义,填充所有相应的运行时是一项复杂的任务,需要研究,并且可能涉及根据目标运行时加载不同的填充。

此外,数组的性质"lib"选项允许您组合多个值以匹配您的运行时间。例如,要匹配支持 es2015 的 Web 浏览器并添加由 polyfill 提供的这些对象方法,您可以编写

"lib": ["es2015", "es2017.object", "dom"]

See the TypeScript 手册了解更多详细信息。

Note:一些评论者问为什么改变是错误的--target代替--lib因为两者都会使代码能够进行类型检查?原因是--target更改代码的转译方式。例如,"target": "es2017"意思是async函数不会针对较旧的运行时进行转换。这是不正确的,因为目的是允许使用附加库,而不是更改输出语法,因此区分语法特征和库特征很重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类型“ObjectConstructor”上不存在属性“entries” 的相关文章

  • 弃用警告:时刻构造回退到 js Date

    我正在尝试转换这个日期时间 150423160509 这是 utc 日期时间 改为以下格式 2015 04 24 00 05 09 本地时区 通过使用 moment js var moment require moment timezone
  • 有没有办法将 Google 文档分割成多个 PDF?

    我想在 Google Scripts VBA 代码中复制我为 Word 文档编写的代码 基本上 它通过搜索我插入文档中的标签 将文档 切片 为多个 PDF 文件 目的是允许合唱团使用 forScore 管理乐谱的应用程序 在切片点插入先前注
  • Javascript 无法正确排序 DECIMAL 数字

    我有一些代码可以按字母顺序对名称进行排序 我遇到的问题是它处理小数的方式 它对名称进行排序 如下所示 我宁愿它按数字递增 DOG 1 0510 DOG 1 1031 DOG 11 1792 DOG 12 0920 DOG 12 1170 D
  • Angular AOT 和 Rollup - 无法解析“app.module.ngfactory”

    我正在尝试完成 Angular 的 AOT 教程 https angular io docs ts latest cookbook aot compiler html https angular io docs ts latest cook
  • Cordova SQLite 保存 BLOB

    我的 Cordova SQLite 插件有问题 如何将 BLOB 图像保存到 SQLite 我在 JS 中有 BLOB 对象 Blob size 96874 type image jpeg proto Blob length 1 我试图拯救
  • 通过 Javascript 更改 Webkit 属性?

    请帮助我 可能是因为我对 CSS 动画和 Javascript 相当陌生 但我使用的代码应该更改它的属性 当我运行代码时 它会执行代码中的所有其他操作 除了更改所需 div 的 CSS 属性 我已经尝试了所有这四种方法 但似乎都不起作用 它
  • 如何从对象数组中删除所有重复项?

    This is a large array of objects e g let totalArray id rec01dTDP9T4ZtHL4 fields user id 170180717 user name abcdefg even
  • 从 ES6 模块导入函数表达式或函数声明有什么区别?

    据我了解 参见第 16 3 2 1 节 http exploringjs com es6 ch modules html ES6 允许函数 类导出操作数使用不同的语法 区别在于导出的函数是否需要在导入时解释为函数声明 在这种情况下 您可以编
  • TypeError:cli.init 不是 React Native 的函数

    在 MacBook Air M1 芯片中运行 npx react native init appName 时 TypeError cli init is not a function at run opt homebrew lib node
  • Angular 2如何将子组件中的方法发送到父组件

    我试图从子组件中删除输入字段 它是通过 Output将激活方法的信息delete 在父组件中 先感谢您 您可以使用以下方法来完成此操作EventEmitter and Output 在下面的代码片段中 您可以调用passDataToPare
  • 在Javascript中将RGB数组转换为RGBA数组的快速方法

    我正在使用的模拟器在内部存储 RGB 值的一维帧缓冲区 但是 HTML5 画布在调用 putImageData 时使用 RGBA 值 为了显示帧缓冲区 我当前循环遍历 RGB 数组并以某种方式创建一个新的 RGBA 数组与此类似 https
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • Google 地图 Javascript v3 折线点击事件

    我正在尝试显示一张地图 其中有多条路线布置为折线 单击多段线时 我想显示特定于该线的数据 将数据与线关联不是问题 但无论单击哪条线 显示的数据都会与最近绘制的线关联 就好像每条新折线都会覆盖最后一条线一样 我有一个数据库 其中包含 gpx
  • Angular 2发送数组另一页

    我正在使用 Angular 开发天气应用程序 我是 Angular 的新手 我想带上我选择的城市的天气信息 但我无法将数据发送到第二页 哪里有问题 预先感谢您的帮助 export class ForecastComponent implem
  • Kendo 刷新 (DropDownList.refresh()) 不起作用错误未定义

    我试图在另一个 DropDownList 更改后刷新下拉列表 但 Refresh 方法未定义错误正在升级 我尝试再次读取数据源 它显示它正在加载 但数据仍然相同 帮助解决这个问题请 Code DropDownList1 change fun
  • IE9 中的无效字符 DOM 异常

    以下这段 JS 曾经在 IE8 中工作 现在在 IE9 中失败 document createElement 我收到以下异常 SCRIPT5022 DOM 异常 INVALID CHARACTER ERR 5 上面这段代码是不是不符合标准呢
  • 如何获取从 Express (Node.js) 中的表单传递的数据

    我想获取使用表单从页面传递的数据 并在重定向的页面中使用该数据 我的客户端有这个表格
  • 有角。 [HMR] 无法应用更新。需要完全重新加载

    我添加 HMR 故事配置 hmr https github com angular angular cli wiki stories configure hmr 到我的 Angular 项目 但不是热重新加载 而是完全重新加载 更新到Ang
  • “memset”没有 DLL 那么如何 ctype 它

    如何使用memset在 jsc 类型中 没有对应的 DLL 我搜索 搜索了 js ctype 代码 但找不到要破解的示例 如果你只是想memset一个数组为零字节 然后我有 好消息 大家 js ctypes 会将新数组初始化为零 否则 最简
  • 如何修复语法错误:无法在模块外部使用 import 语句?

    我对这一切都很陌生 我正在尝试将 Node Typescript 后端添加到我的 Angular 项目中 但是导入express后总是报错 ERROR SyntaxError Cannot use import statement outs

随机推荐