执行 Jest 测试时未加载类型定义

Types definitions aren't loading when executing Jest tests

我正在构建一个测试实用程序的开源库,其中还包括自定义技术匹配。但是在创建测试文件和 运行 它们时,会出现很多关于类型定义的错误。

参考以下错误当运行yarn test

错误与两个不同的类型定义有关,它们是:

我的问题是:为什么没有加载类型定义?我认为关于 TS 编译器或 Jest 配置应该有问题

PR with the tests code

很好的问题,我 运行 多次关注这个问题。我使用 jest-extended which says in their readme,您可能需要在 global.d.ts 文件中导入类型定义。然后将 global.d.ts 文件添加到 tsconfig.json.

中的 typeRoots

我还在我的存储库内部创建了我自己的笑话匹配器,并将该文件也添加到我的 typeRoots

需要注意的是,如果这些文件未包含在您的 tsconfig.json 中,所有这些仍然会失败。例如,您有一个 global.d.ts 文件,但您的 rootDir 设置为 src(不包括 global.d.ts)。


这里说的是repo you can reference for a working example. Here is the custom matcher type definitions, global.d.ts importing jest-extended and tsconfig.jsontypeRoots的定义。

总而言之,我认为您只需将自定义类型显式添加到 compilerOptions。并确保在 tsconfig.json 文件选择中包含您的自定义类型文件。

{
  "compilerOptions": {
    "typeRoots": ["./node_modules/@types", "./**/*.d.ts", "./scripts/custom_matchers.ts"]
  }
}