typescript - 安装 webpack-dev-server npm 包时 typescript 编译不安全

标签 typescript webpack-dev-server typescript-typings

我有一个用 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/

相关文章:

javascript - 为什么我们不能在 typescript 的类中使用 let 关键字

angular - any类型的error怎么改成Error类型的error呢?

node.js - 如何在 feathers/express 中使用 webpack-dev-middleware?

reactjs - 如何实现 webpack-dev-server 来共享服务器端渲染页面的 cookie?

typescript - 如何使用不完整的类型

javascript - 如何使用 typescript 检查对象内部的键和值

即使在添加类型定义文件后,Typescript Intellisense 甚至无法在 VS 代码中工作

typescript - Nexus Prisma - 如何在全局范围内使用 crud 处理 createdAt 和 updatedAt?

javascript - 我可以创建 TypeScript 类型并在 AJAX 返回 JSON 数据时使用它吗?

javascript - 使用 webpack-dev-server 时,html-webpack-plugin 不会将 js 文件注入(inject) index.html