如何扩展jest expect包expectExport的TypeScript命名空间添加自定义匹配器
问题原因
你的写法存在两个核心错误导致类型合并不生效:
- 你声明的
extendExport命名空间和expect包导出的expectExport没有任何关联,TS找不到合并目标 - 没有将类型声明挂载到
expect模块上,属于独立的全局命名空间声明,自然不会对expect包的类型产生影响
解决方案
在你项目的.d.ts声明文件(比如根目录下的expect.d.ts)中写入以下内容即可:
// 声明扩展expect包的类型 declare module 'expect' { interface Matchers<R> { // 在这里添加你自定义的匹配器类型 toWorkProperly(a: number): R; } } export {};
注意事项
- 确保你的
tsconfig.json的include配置包含了这个声明文件,示例配置:{ "include": ["src/**/*", "*.d.ts"] } - 如果修改后类型没有立即生效,重启编辑器的TS服务即可(VS Code可以按
Ctrl+Shift+P执行TypeScript: Restart TS Server命令)
内容的提问来源于stack exchange,提问作者dagda1
相关产品推荐
相关产品推荐

