上下文:尝试让Mocha在我的存储库中对.ts文件运行测试。
问题:当我尝试在我的入门测试文件上运行mocha时:
mocha --compilers ts:ts-node/register ./src/server/backend/specs/index.spec.ts
我发现ts-node
(根据ts-node's documentation)在我的"include": ["./src/**/*"]
文件中看不到tsconfig.json
。这意味着我的Mocha测试看不到./src/types/global.d.ts
,其中包括type Omit<T, K>
的定义(还有其他内容)。我经过测试的模块希望使用Omit
,这会导致编译器错误Cannot find name 'Omit'
。
好-我想-我将使用三斜杠指令将global.d.ts
导入index.spec.ts
中。因此,将/// <reference path="../../../types/global.d.ts" />
添加到index.spec.ts
的顶部,并从ts-lint:<reference> is not allowed, use imports (no-reference)
得到了投诉。 (对我来说是新闻-三斜杠指令是now deprecated,建议“改为使用ES6样式的导入”。)
好的,所以我很天真地用import "../../../types/global";
替换了三斜杠指令,但是tsc当然抱怨global.d.ts
不是模块(当然不是)。确实,我使用global.d.ts
声明了不是模块的东西,所以我很困惑应该如何导入它-并且我不想从global.d.ts
导出任何东西,因为我的理解是然后它将在main-non-mocha上下文中停止产生其全球可读性。
当我仅使用ts-lint中关闭无引用规则的三斜杠指令时,它可以很好地工作,但是我想更好地了解这里的最新模式/思想。谢谢任何人!
答案 0 :(得分:1)
Google finds an issue about this,建议将全局声明文件直接添加到tsconfig.json
中的项目中。如果是ts-node,则必须使用--files
选项。如果您不想这样做,那么没有很好的选择,因此我想说,抑制掉毛警告或禁用no-reference
规则是正确的选择。您可以考虑针对tslint发行新刊物,以进一步讨论这种情况。