【问题标题】:Not safe typescript compilation when webpack-dev-server npm package is installed安装 webpack-dev-server npm 包时不安全的打字稿编译
【发布时间】: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


    【解决方案1】:

    您可以在tsconfig.json 文件中手动配置types 属性。

    最简单的形式:

    {
        "compilerOptions": {
            "target": "es3",
            "types": []
        }
    }
    

    更多详情请见@types, typeRoots and types

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 2019-12-31
      • 2021-10-18
      • 2021-02-26
      • 2022-01-25
      • 2021-07-27
      • 2017-07-23
      相关资源
      最近更新 更多