【发布时间】:2019-12-29 19:40:46
【问题描述】:
我有一个用 typescript 编写的非常小的项目,它目前是用 Babel 编译的。我想摆脱 Babel,只留下一个打字稿编译器来生成结果 JS。另外,我想让 JS 在移动和旧桌面浏览器上运行,所以我保留了默认目标设置 - “ECMA Script 3”。
为了演示我的问题,用一行代码编译一个脚本就足够了:
let clone = Object.assign({}, {a:1});
最初,编译器成功捕捉到问题并显示错误:
test.ts:1:20 - error TS2339: Property 'assign' does not exist on type 'ObjectConstructor'.
但是一旦我安装了 ;webpack-dev-server' npm 包,编译器就会停止看到这个问题并完成编译而没有错误。
我的小研究表明问题是由我的 node_modules 中的“@types/node”包引起的,因为它引用了 es2018。
在 node_modules>@types>node>ts3.2>index.d.ts 我看到了:
/// <reference lib="es2018" />
显然,Object.assign 是 ES2018 的有效方法,这就是编译器停止抱怨的原因。
我安装这个包的原因是它是对以下路径的传递依赖:
webpack-dev-server -> del -> @types/glob -> @types/node
如果可以将 'webpack-dev-server' npm 添加到我的项目中并让 ts 编译器捕获 'Object.assing' 问题,这给我留下了一个问题?
【问题讨论】:
标签: typescript webpack-dev-server typescript-typings