我有一个用 typescript 编写的非常小的项目,目前使用 Babel 进行编译。我想摆脱 Babel,只留下一个 typescript 编译器来生成结果 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”问题?
最佳答案
您可以在 tsconfig.json
文件中手动配置 types
属性。
最简单的形式:
{
"compilerOptions": {
"target": "es3",
"types": []
}
}
参见@types
, typeRoots
and types
了解更多详情。
关于typescript - 安装 webpack-dev-server npm 包时 typescript 编译不安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643929/