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

TypeScript中如何为fetch请求返回的对象声明正确类型

问题原因
  • 报错的核心原因是你没有等待response.json()的异步执行完成,就直接访问了count属性:
    • response.json()方法本身返回的是Promise<unknown>类型的Promise对象,你手动将它的类型声明为Promise<ResponseFormat>是没问题的,但Promise对象本身不存在count属性,只有当Promise resolve之后拿到的实际返回值才有该属性。
  • 你的类型声明没有错误,是异步处理逻辑有疏漏。
修正后的代码
async getFromApi(){
    // 首次请求获取总条数
    const firstResponse = await fetch(this.sourcePath);
    // 加await获取Promise resolve后的实际返回数据,类型标注为ResponseFormat
    const firstResData: ResponseFormat = await firstResponse.json();
    
    // 携带总条数作为limit参数发第二次请求,拉取全量数据
    const fullDataResponse = await fetch(`${this.sourcePath}/?limit=${firstResData.count}`);
    const fullResData: ResponseFormat = await fullDataResponse.json();
    
    // 后续处理全量数据的逻辑写在这里
}
优化建议
  • 首次请求仅需要获取count字段,不需要返回完整的列表数据,可以在首次请求的url后加?limit=1参数,减少接口返回的数据体积,提升请求速度:
const firstResponse = await fetch(`${this.sourcePath}/?limit=1`);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:09:05