TypeScript调用.entries()报Property 'entries' does not exist on type错误如何解决
TypeScript 调用
.entries()报错排查解决步骤 - 首先确认方法调用方式符合规范
Object.entries是ES标准定义的静态方法,只能通过Object.entries(目标对象)的方式调用,不能在普通对象实例上直接调用obj.entries()。如果是数组类型,数组实例自带entries()实例方法,可直接调用。
错误示例:
正确示例:const user = { name: "张三", age: 20 }; user.entries() // 此处会触发不存在属性的报错const user = { name: "张三", age: 20 }; Object.entries(user) // 正常返回键值对数组 const list = [1,2,3]; list.entries() // 数组实例可直接调用entries方法 - 排查VSCode TypeScript版本匹配问题
多数IDE侧的类型报错是因为VSCode使用了自带的TypeScript版本,和项目本地安装的版本不一致导致。可按以下步骤修正:- 按下
Ctrl+Shift+P(Windows)/Cmd+Shift+P(Mac)打开命令面板 - 搜索并选择「TypeScript: Select TypeScript Version」
- 选择「Use Workspace Version」,使用项目
node_modules中安装的TypeScript版本
- 按下
- 校验调用对象的类型定义
检查调用entries的变量是否被声明为unknown/any,或者类型未被正确推导:- 如果是无类型的变量,可补充明确的类型声明
- 如果是类型收窄问题,可通过
as断言为正确类型后再调用
- 验证tsconfig配置是否生效
在项目根目录执行命令npx tsc --noEmit,如果命令行无报错,仅VSCode报错,说明是IDE的类型服务缓存问题,重启TS语言服务或者重启VSCode即可解决。 - 特殊场景扩展声明(不推荐)
如果你确实需要在Object实例上挂载自定义的entries方法,可在项目全局类型声明文件(如global.d.ts)中补充以下声明:interface Object { entries<T = any>(): [string, T][] }
内容的提问来源于stack exchange,提问作者ivaylo
相关产品推荐
相关产品推荐

