TypeScript报错:传递...args作为函数参数时需元组或剩余参数
解决fetch-mock mock函数spread参数类型错误问题
错误原因
你代码里的...args: any是将args声明为单个any类型参数,而非剩余参数数组,而fetchMock.mock接收的是rest参数,TypeScript要求spread的参数必须是元组类型或传递给rest参数,因此触发报错。
解决方案
方案1:类型安全的参数复用(推荐)
使用TypeScript的Parameters工具类型,直接提取fetchMock.mock的参数类型作为元组,既保留可变参数特性,又保证类型匹配:
import fetchMock from 'fetch-mock'; export function mockRequest(...args: Parameters<typeof fetchMock.mock>) { return fetchMock.mock(...args); }
方案2:灵活的数组类型声明
如果不需要严格的类型检查,可将args声明为数组类型any[],这样spread时符合TypeScript的要求:
export function mockRequest(...args: any[]) { return fetchMock.mock(...args); }
说明
- 方案1会完全复用
fetchMock.mock的参数类型,调用时会自动提示正确的参数格式,避免类型错误; - 方案2更灵活,但丢失了类型检查能力,适合快速调试场景。
内容的提问来源于stack exchange,提问作者EugenSunic
相关产品推荐
相关产品推荐

