Javascript 打字脚本+;茉莉花/摩卡,但没有全球类型?
我想使用一个测试框架,比如Jasmine或Mocha。然而,这样做意味着通过npm添加它们的@types库,不幸的是这些库污染了全局名称空间 这意味着在编写应用程序代码时,IntelisSense包含测试函数,尽管这是有史以来最常见的问题,但它仍然让我感到恼火 我希望可以导入每个Javascript 打字脚本+;茉莉花/摩卡,但没有全球类型?,javascript,unit-testing,typescript,jasmine,mocha.js,Javascript,Unit Testing,Typescript,Jasmine,Mocha.js,我想使用一个测试框架,比如Jasmine或Mocha。然而,这样做意味着通过npm添加它们的@types库,不幸的是这些库污染了全局名称空间 这意味着在编写应用程序代码时,IntelisSense包含测试函数,尽管这是有史以来最常见的问题,但它仍然让我感到恼火 我希望可以导入每个*.spec.ts文件顶部的库,但定义文件似乎不支持模块 我发现了另一个名为Tape的库,它使用模块导出,但是它相当基本,没有用于测试的浏览器UI(它们出现在浏览器控制台中) 有人有什么建议吗?一个可能的解决方案是在编译
*.spec.ts
文件顶部的库,但定义文件似乎不支持模块
我发现了另一个名为Tape
的库,它使用模块导出,但是它相当基本,没有用于测试的浏览器UI(它们出现在浏览器控制台中)
有人有什么建议吗?一个可能的解决方案是在编译应用程序的
tsconfig.json
中添加“类型”:[]
。我的一些项目的结构如下:
包含应用程序代码,并具有用于编译应用程序的src
tsconfig.json
包含测试代码,并具有适合测试的test
tsconfig.json
tsconfig base.json
,其他两个配置文件通过“extends”进行扩展:“./tsconfig base”
当我有一个如上所述的项目结构时,只需在我的src/tsconfig.json
中添加“类型”:[]
,就足以对应用程序代码隐藏Mocha globals。请注意,有些项目需要列出至少一些包,而不是空数组。起初,我认为我必须在中列出我的应用程序使用的每个包的“类型”
,但事实并非如此,因为,如以下所述:
指定“类型”:[]
以禁用自动包含@types
包
请记住,只有在使用带有全局声明的文件(而不是声明为模块的文件)时,自动包含才很重要例如,如果使用import“foo”
语句,TypeScript仍然可以通过node\u模块
&node\u模块/@types
文件夹查找foo
包。
重点补充
重要提示:某些项目结构可能使仅使用
“类型”
无法解决问题。我有一个不同于我上面描述的项目结构。我必须重构该项目的构建过程,以便能够通过为“types”
添加适当的值,从应用程序文件中隐藏Mocha。这是一个新项目,因此我可以按照您的建议对其进行组织。考虑到当前开发环境的能力,这个答案似乎是最好的方法。