请求时使用第三方请求库中拦截器,typescript应该怎么写?

例如使用某个第三方请求库request,请求库设置了拦截器,请求成功时返回RequestResponse<T>的T

type RequestResponse<T = any> = {
  data: T;
  response: Response;
};
function getXXX<T>() : Promise<RequestResponse<T>>{
    return request(xxx);
}

但是使用时data的数据类型被推断为RequestResponse<T>而不是T,doSomething的参数类型是T不是RequestResponse<T>,这种情况大家是怎么解决的呢?

async () => {
    const data = await getXXX<TDetail>();
    doSomething(data);
}
阅读 2k
2 个回答

你getXXX返回T就好了吧
或者传入doSomething的时候把T取出来,data.xxx

你自己主动声明的,getXXX<T>返回数据就是Promise<RequestResponse<T>>
await出来就是RequestResponse<T>
你想改就把外面的RequestResponse<T>干掉

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题