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

TypeScript结合redux-thunk+axios封装ApiClient时callback报错如何解决

TypeScript callback类型不匹配错误快速修复方案

错误根因

TypeScript 无法自动推断出axios.get返回的response.data的类型,默认推导为never类型,同时你使用宽泛的Function类型标注callback,和.then()方法要求的入参函数类型不匹配,因此抛出错误。

修复方案

方案1(推荐,无副作用)

给axios请求添加返回值泛型,同时明确callback的参数类型,修改后的代码如下:

// ApiClient文件修改
const apiClient = {
  // 把callback的Function类型替换为明确的入参类型声明
  getComments: function (callback: (comments: types.Comment[]) => void) {
    // 给axios.get加泛型,明确返回的data是Comment数组类型
    return axios
      .get<types.Comment[]>(routes.GET_COMMENTS_URL)
      .then((response) => response.data)
      .then(callback) // 此处错误会消失
      .catch((err) => console.log(err));
  },
};

如果你的callback是可选参数,可以把类型标注改为callback?: (comments: types.Comment[]) => void,调用前加非空判断即可。

方案2(临时应急,适合快速跑通流程)

如果暂时不想调整类型定义,可以用类型断言跳过类型检查:

const apiClient = {
  getComments: function (callback: Function) {
    return axios
      .get(routes.GET_COMMENTS_URL)
      .then((response) => response.data)
      // 把callback断言为接收任意参数返回void的函数
      .then(callback as (data: unknown) => void)
      .catch((err) => console.log(err));
  },
};

注意该方案会丢失类型检查,仅建议临时使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:54:00