小编Mic*_*Mic的帖子

安装多个打字稿类型定义,声明相同的全局变量

我正在使用打字稿,节点和电子构建应用程序.

我在应用程序中使用jquery,我已经安装了@ types/jquery包以获得intellisense提示.

接下来,我使用mocha和spectron创建了一个测试.Spectron使用webdriverio并通过一些属性公开其API.我需要使用这些属性,所以我安装了@ types/webdriverio以获得intellisense提示.

现在,每当我运行tsc工具来编译项目时,我都会收到以下错误:

node_modules/@types/jquery/index.d.ts(36,15): error TS2451: Cannot redeclare block-scoped variable '$'.
node_modules/@types/webdriverio/index.d.ts(1898,18): error TS2451: Cannot redeclare block-scoped variable '$'.
node_modules/@types/webdriverio/index.d.ts(1899,18): error TS2451: Cannot redeclare block-scoped variable '$'.
Run Code Online (Sandbox Code Playgroud)

问题是两个包都声明了一个全局$变量.您也可以在"全局值"下的npm页面中对其进行验证:

https://www.npmjs.com/package/@types/jquery

https://www.npmjs.com/package/@types/webdriverio

我不明白为什么tsc试图将它们编译在一起,因为我没有在同一个.ts文件中使用jquery和webdriverio?

此外,即使我注释掉测试,所以我在任何地方都没有引用webdriverio,当我运行tsc时,我得到了相同的错误.可能tsc正在编译node_modules/@类型中的所有源.事实上,如果我删除node_modules/@ types/webdriverio文件夹并再次运行tsc,我没有错误(当然,只要我保持测试代码注释).

这是我的tsconfig.json,它位于项目的根目录中:

{
    "compilerOptions": {
        "target": "ES6",
        "module": "commonjs",
        "sourceMap": false,
        "inlineSourceMap": true,
        "inlineSources": true,
        "declaration": false,
        "outDir": "dist"
    },
    "include": [
        "src/**/*"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的所有源代码都在src目录中.测试在src/test中.

是否有任何配置可以保持webdriverio和jquery类型在编译时分离?另外,我已经看到一些用js编写的代码示例,它们一起使用:这在typescript中是不可行的吗?

jquery node.js typescript webdriver-io

5
推荐指数
1
解决办法
321
查看次数

标签 统计

jquery ×1

node.js ×1

typescript ×1

webdriver-io ×1