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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:06:48