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

TypeScript API调用工具使用泛型时出现未读取T的错误求助

解决TypeScript泛型未使用错误

错误原因

requests.get中声明的泛型<T>未在函数的参数、返回值或内部逻辑中被使用,TypeScript会检测到这种冗余泛型并抛出错误。同时原代码中泛型未在responseBody和requests.get之间建立关联,泛型优化未起到实际作用。

修正方案

  1. 重构响应类型接口:使用带泛型的接口明确响应体的类型关联
  2. 让泛型贯穿整个调用链:将requests.get的泛型传递给responseBody,并指定返回类型
  3. 移除冗余any类型:利用泛型实现类型安全,替代模糊的any

修正后的完整代码

// 定义带泛型的API响应接口,明确body的类型
interface ApiResponse<T> {
  body: T;
}

// responseBody函数接收泛型响应,返回指定类型的body
const responseBody = <T>(response: ApiResponse<T>): T => response.body;

const requests = {
  // 声明泛型T,指定返回类型为Promise<T>,并将T传递给responseBody
  get: <T>(url: string): Promise<T> => getGraphClient().api(url).get().then(responseBody<T>)
}

const Activities = {
  // 调用时指定泛型为Activity[],返回Promise<Activity[]>
  list: () => requests.get<Activity[]>(academicCalendarURL)
}

const agent = {
  Activities
}

export default agent;

关键改动说明

  • ApiResponse<T>接口让响应体的body类型与泛型绑定,避免any的模糊性
  • requests.get的泛型<T>被用于指定返回的Promise<T>类型,同时传递给responseBody<T>,解决了泛型未使用的问题
  • 整个调用链从requests.get<Activity[]>到responseBody再到最终返回值,类型完全一致,实现了类型安全的API调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:39:22