Typescript + Jasmine / Mocha,但没有全局类型?

Mar*_*lon 5 javascript unit-testing mocha.js jasmine typescript

我想使用 Jasmine 或 Mocha 等测试框架。然而,这样做意味着通过 npm 添加他们的 @types 库,不幸的是这些会污染全局命名空间。

这意味着在编写应用程序代码时,intelisense 包含测试功能,当然这是有史以来最第一的世界问题,但对我来说仍然很烦人。

我希望我可以在每个*.spec.ts文件的顶部导入库,但定义文件似乎不支持模块。

我发现了另一个Tape使用模块导出的库,但它是相当基本的,并且没有用于测试的浏览器 UI(它们出现在浏览器控制台中)。

有没有人有任何建议?

Lou*_*uis 3

一种可能的解决方案可能是添加到编译应用程序的"types": []文件中。tsconfig.json我的一些项目的结构如下:

\n
    \n
  • src包含应用程序代码并具有tsconfig.json用于编译应用程序的文件,

    \n
  • \n
  • test包含测试代码并具有tsconfig.json适合测试的内容。

    \n
  • \n
\n

如果这两个文件需要共享配置,我有一个tsconfig-base.json其他两个配置文件通过"extends": "../tsconfig-base".

\n

当我有一个像上面这样结构的项目时,只需添加"types": []到 mysrc/tsconfig.json就足以从应用程序代码中隐藏 Mocha 全局变量。请注意,某些项目需要至少列出一些包,而不是空数组。最初,我认为我必须在"types"我的应用程序使用的每个包中列出,但事实并非如此,因为如文档中所述:

\n
\n

指定"types": []禁用@types包的自动包含。

\n

请记住,仅当您\xe2\x80\x99 使用具有全局声明的文件(而不是声明为模块的文件)时,自动包含才重要。例如,如果您使用语句,TypeScript 仍可能会查找&文件夹来查找包。import "foo"node_modulesnode_modules/@typesfoo

\n
\n

添加了强调。

\n

重要警告:某些项目结构可能无法仅使用"types". 我有一个项目的结构与我上面描述的不同。我必须重构该项目的构建过程,以便能够通过为"types".

\n