TS error: property values does not exist on objectconstructor

翻译一下:Object对象上不存在values属性

实际上,Object.values这个API属于ES2017

即,此时要求,TS编译器需要包含ES2017以上的API,才能够编译通过。

那么,默认情况下,TS会以Javascript(ECMAScript)哪个版本的API为基础呢?

TypeScript includes a default set of type definitions for built-in JS APIs (like Math), as well as type definitions for things found in browser environments (like document). TypeScript also includes APIs for newer JS features matching the target you specify; for example the definition for Map is available if target is ES6 or newer.

以上是官方描述,简单来说,默认情况下,会智能的根据tsconfig.json文件中compilerOptions.target来判断。target代表TS编译后输出的Javascript版本。

不难想象,如果target是es2017,那么自然TS编译器就会包含Object.values这个API。但实际情况下,考虑到兼容问题,一般我们打包输出的是ES5。

即,编译的Javascript API是基于ES5的,不存在Object.values,所以就会出现标题中的错误。

此时,就需要另外一个选项:ComplierOtions.lib,指当前编译环境依赖的类库。可以参考官方文档查看对应的枚举值。或者类似于如下的设置即可:

{
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "esnext"],
    ...
``}`
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值