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

TypeScript中使用Fetch返回Promise<Array<any>>时出现类型错误

解决TypeScript中Promise返回类型不匹配的问题

我来帮你搞定这个TypeScript类型报错的问题。

首先,这个报错的核心原因很明确:你的catch分支没有返回一个符合Promise<Array<any>>要求的值。当你在catch里只执行console.error(error)而没有返回值时,这个分支会默认返回undefined(对应TypeScript里的void类型),这就导致整个Promise的类型变成了Promise<void | any[]>——和你声明的返回类型Promise<Array<any>>自然匹配不上。

修复方案

你只需要在catch分支里返回一个合法的数组(比如空数组,或者根据业务需求返回的默认数组),就能让整个Promise的类型统一为Promise<Array<any>>,解决类型不匹配的问题。修改后的代码如下:

(q: any): Promise<Array<any>> => { 
  return fetch('http://speedtest.net', { mode: 'no-cors' }) 
    .then(response => response.json()) 
    .then((data: any) => [data]) 
    .catch(error => {
      console.error(error);
      // 返回空数组满足类型要求,也可根据业务场景返回其他合法数组
      return [];
    }); 
};

关于“仅返回data而非[data]也有问题”的补充

如果直接返回data也报错,那是因为data本身的类型不是数组。这时候你需要确认:要么data确实是数组类型(那你可以直接返回它,同时可以把类型声明更具体,比如Promise<YourDataType[]>);要么就像你原来的写法一样,把data包装成数组返回,确保返回值符合Array<any>的类型要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:24:32