You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在TypeScript import语句中直接添加类型断言适配Jest Mock类型?

你之前的写法报错的核心原因是:ES模块的import标准语法不支持在解构导入的位置直接添加类型注解,因此你写的第一个冒号会触发TS1005语法错误。
以下是可行的单行实现方案:

方案1:基于require的整体类型断言(最简洁)

直接对require返回的模块对象做整体类型断言后解构,一行即可完成需求:

const { createUrl, getToken } = require('./fooApi') as { createUrl: jest.Mock, getToken: jest.Mock };

方案2:ES模块环境兼容写法

如果你的项目禁用CommonJS语法、仅允许使用ES模块导入,可使用以下单行写法:

import * as fooApi from './fooApi'; const { createUrl, getToken } = fooApi as Record<'createUrl'|'getToken', jest.Mock>;

方案3:Jest官方推荐写法

使用Jest内置的jest.mocked工具方法做类型转换,不需要手动编写断言的类型结构,可维护性更高:

import { createUrl, getToken } from './fooApi'; const [mockedCreateUrl, mockedGetToken] = [jest.mocked(createUrl), jest.mocked(getToken)];

注:jest.mocked是Jest 27及以上版本内置的类型工具,会自动将传入的mock对象转换为对应的jest.Mock类型,适配绝大多数场景。

内容的提问来源于stack exchange,提问作者jcollum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:27:02