代码之家  ›  专栏  ›  技术社区  ›  Marlon

Typescript+茉莉花/摩卡,但没有全局类型?

  •  6
  • Marlon  · 技术社区  · 8 年前

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

    这意味着在编写应用程序代码时,intelisense包含测试函数,尽管这是有史以来第一世界的问题,但它仍然让我感到恼火。

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

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

    有人有什么建议吗?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Community Mohan Dere    6 年前

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

    • src 包含应用程序代码并具有 用于编译应用程序,

    • test 包含测试代码并具有 t配置。json 适合测试。

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

    当我有一个像上面这样结构的项目时,只需添加 “类型”:[] 给我的 src/tsconfig.json 足以在应用程序代码中隐藏Mocha globals。注意,一些项目需要列出至少一些包,而不是空数组。起初,我认为我必须在 "types" 我的应用程序使用的每个包,但事实并非如此,因为 documentation :

    具体说明 “类型”:[] 禁用自动包含 @types

    请记住,只有在使用具有全局声明的文件(而不是声明为模块的文件)时,自动包含才重要。 import "foo" 语句,例如,TypeScript可能仍能看穿 node_modules & node_modules/@types 要查找的文件夹 foo 包裹

    增加了强调。

    重要提示:一些项目结构可能会使仅使用 “类型” . 我有一个不同于我上面描述的项目结构。我必须重构该项目的构建过程,以便能够通过为应用程序文件添加适当的值来隐藏Mocha “类型” .

    推荐文章