如何在 TypeScript 中使用 Mocha 和 Jest 而不发生冲突?

2024-04-07

我正在尝试在一个项目上安装带有类型的 Mocha 和 Jest。我们使用严格的类型检查,因此我收到与冲突的全局类型相关的错误。

我试图创建不明确的模块声明,仅定义 Mochatypes at tsconfig。我一直在尝试删除 Jest 的声明 - 但这会有部分帮助。禁用严格类型检查或库检查不是一个选项。

我本来希望能够正常工作,但结果却出现了下一个错误。

node_modules/@types/jest/index.d.ts(29,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'beforeEach' must be of type 'HookFunction', but here has type 'Lifecycle'.
node_modules/@types/jest/index.d.ts(31,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'afterEach' must be of type 'HookFunction', but here has type 'Lifecycle'.
node_modules/@types/jest/index.d.ts(32,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'describe' must be of type 'SuiteFunction', but here has type 'Describe'.
node_modules/@types/jest/index.d.ts(34,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'xdescribe' must be of type 'PendingSuiteFunction', but here has type 'Describe'.
node_modules/@types/jest/index.d.ts(35,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'it' must be of type 'TestFunction', but here has type 'It'.
node_modules/@types/jest/index.d.ts(37,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'xit' must be of type 'PendingTestFunction', but here has type 'It'.
node_modules/@types/jest/index.d.ts(38,13): error TS2403: Subsequent variable declarations must have the same type.  Variable 'test' must be of type 'TestFunction', but here has type 'It'.
node_modules/@types/node/globals.d.ts(926,15): error TS2430: Interface 'Global' incorrectly extends interface 'MochaGlobals'.
  Types of property 'describe' are incompatible.
    Type 'Describe' is not assignable to type 'SuiteFunction'.
      Types of property 'only' are incompatible.
        Type 'DescribeBase' is not assignable to type 'ExclusiveSuiteFunction'.
          Type 'void' is not assignable to type 'Suite'.

即使从 Jest 中删除所有类型也会出现此错误:

node_modules/@types/node/globals.d.ts(926,15): error TS2430: Interface 'Global' incorrectly extends interface 'MochaGlobals'.
  Types of property 'describe' are incompatible.
    Type 'Describe' is not assignable to type 'SuiteFunction'.
      Types of property 'only' are incompatible.
        Type 'DescribeBase' is not assignable to type 'ExclusiveSuiteFunction'.
          Type 'void' is not assignable to type 'Suite'.

截至 2019 年 8 月,此问题似乎已修复master https://github.com/facebook/jest/pull/8571,但新版本尚未发布。

与此同时,我能够通过将以下内容添加到我的定义之一来解决这些错误:

declare module '@jest/types/build/Global' {
  interface DescribeBase extends mocha.SuiteFunction {}
  interface ItBase extends mocha.TestFunction {}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 TypeScript 中使用 Mocha 和 Jest 而不发生冲突? 的相关文章

随机推荐

  • 将一个整数平均分为 X 部分

    我正在 PHP 中寻找一种有效的方法来将数字等分 数字始终是整数 没有浮点数 假设我有一个数组 hours 其值从 1 到 24 hours 1 等 和一个包含整数的变量 int 我想要实现的是将 int 的值平均分为 24 个部分 这样我
  • 标签中的 Ember 车把模板

    ember 特别是应用程序模板 是否可以在 head 标签内进行操作 以便动态更改标题标签 元标签 外部 css 样式表和 favicon 等内容 如果是这样 那么一种干净的方法是什么 为了完成这项工作 我所做的是创建车把助手 例如 如果您
  • 保存用户个人资料详细信息 Android 应用程序的最佳方式

    我正在创建一个有多个用户的应用程序 我创建了一个对象 用户 其中包含更多详细信息 姓名 年龄 自定义对象等 因为我有一个自定义对象 所以我知道使用共享首选项会很困难 存储用户数据的最佳方式是什么 我研究过 SQLite 但找不到将自定义对象
  • 有没有办法从应用程序脚本中的 graphql API 获取数据?

    我正在尝试通过应用程序脚本从 graphql API 获取数据 使用 POST 获取 graphql 数据有一个问题 提供从 GraphQL API 获取的查询字符串 https stackoverflow com questions 47
  • C++ 模板复制构造函数,编译器说“传递 const 作为此参数丢弃限定符”

    我正在尝试创建动态矩阵的模板类 以我目前对 C 的了解 我设法解决了一些问题 但我陷入了复制构造函数和重载运算符 的困境 换句话说 我无法创建我的对象的副本 在我看来 这应该可行 但我的朋友编译器告诉我 我有 1 个错误 错误 将 cons
  • 如何排查/解决 Xcode 10.1/iOS 12.1 中出现的“信号强度查询返回错误”日志?

    最近更新到 iOS 12 1 从 12 0 开始 Xcode 10 1 从 10 0 开始 在我的物理设备上进行调试时 在 Xcode 控制台中看到大量错误消息 如下所示 NetworkInfo Signal strength query
  • 客户端Web - 如何随时获取当前记录ID

    我正在努力 基于工作流程状态的不同权限 https stackoverflow com questions 10994216 different permissions based on workflow state问题 但我正在努力解决这
  • 完美穿越

    我正在考虑一个与完美转发有一些相似之处的问题 但是函数参数没有传递给被调用的函数 而是返回了 这就是为什么我称之为 完美传递 问题如下 假设我们有一个函数 它通过引用 可能还有一些额外的参数 获取一个对象 修改该对象 然后返回修改后的对象
  • parseFloat 舍入

    我有一个 javascript 函数 可以自动将输入字段添加在一起 但是添加像 1 35 1 35 1 35 这样的数字会得到 4 050000000000001 的输出 仅作为示例 如何将总数四舍五入到小数点后第二位而不是那个长字符串 输
  • 深层类继承层次结构——坏主意?

    希望高手能指点迷津 非常高的概述是 我不是编码初学者 但对 OOP 仍然是新手 这组消息类是我们正在编写的大型模拟应用程序的核心 我不想愚蠢地这样做 这个接口将应用程序从定序器到执行器切成两半 反之亦然 我的问题是 拥有这么深的继承层次结构
  • Android 布局 XML 中的“@id/android:list”与“@android:id/list”

    在 Android 自己的文档以及我继承的应用程序中 我有时会看到带有以下形式的视图 ID id android list 有时用表格 android id list 也就是说 android 有时位于 和 id 之间 有时位于 和实际ID
  • 条件内连接

    我希望能够根据表达式的结果内连接两个表 到目前为止我一直在尝试的 INNER JOIN CASE WHEN RegT Type 1 THEN TimeRegistration ELSE DrivingRegistration AS RReg
  • C 程序中的 C++ dll

    我想创建一个 dll 库C 代码并使用它C程序 我只想导出一个函数 GLboolean load obj const char filename GLuint object list 库中的头文件 ifndef OBJ H define O
  • jqgrid添加后如何清除添加表单中的自动完成框内容

    jqGrid 添加表单包含使用以下代码的自动完成框 如果新行添加到 jqgrid 自动完成字段不会被清除 仍然显示添加的行内容 简单的文本框列已正确清除 如何清除自动完成框 var grid grid grid jqGrid url Get
  • NuGet 更新和条件引用

    我们的 nupkg 包包含同一 dll 的多个版本 x86 x64 AnyCPU 并且在 csproj 文件中 在引用中 我使用条件引用根据当前平台集选择特定的 dll 因此 我对同一个库有多个引用 只是不同的平台编译 这是我的 cspro
  • JavaScript 中“>>>”是什么意思? [复制]

    这个问题在这里已经有答案了 我有一段我想理解的 JavaScript 代码 return n gt gt gt 0 2 34e10 那么 gt gt gt 是什么意思呢 预先感谢 这是我的第一个问题 It s a 零填充右移 https d
  • 减去除非负数然后返回 0

    我先说 这只是为了满足我的好奇心 而不是在编码项目上需要帮助 但我想知道是否有人知道一个类似绝对值的函数 特别是在Python中 但我会接受一个有效的数学概念 给定一个数字如果为负则返回0 如果为正则返回该数字 伪代码 def myFunc
  • SvelteKit:如何通过别名(如 $routes)从组件和端点引用 /routes 文件夹?

    接下来是我的 简化的 项目结构 appname src lib routes jsconfig json 在 jsconfig js 文件中 我有一个路径键 其别名为 lib 形式的 src lib 文件夹 compilerOptions
  • 无法从客户端连接到 PostgreSQL - 错误超时

    经过很多天尝试连接到我的 PostgreSQL 实例后 我决定是时候寻求帮助了 我正在尝试从 Windows 计算机连接到我的 PostgreSQL 数据库 我正在尝试 pgAdmin 4 和 dBeaver 但都无法连接 下面是我使用 d
  • 如何在 TypeScript 中使用 Mocha 和 Jest 而不发生冲突?

    我正在尝试在一个项目上安装带有类型的 Mocha 和 Jest 我们使用严格的类型检查 因此我收到与冲突的全局类型相关的错误 我试图创建不明确的模块声明 仅定义 Mochatypes at tsconfig 我一直在尝试删除 Jest 的声