使用typescript封装axios支持接口返回值类型提示和检查

14 篇文章 0 订阅

axios: 0.27.1
typescript: 4.1.5

request.ts

import axios, { AxiosResponse, AxiosRequestConfig } from 'axios';
const service = axios.create({
//  baseURL,timeout
// 一些axios的基础配置,如baseUrl、超时时间等
});

// 拦截器的配置按照自己的需求来,不做赘述,网上可以找到各种成熟的方案
service.interceptors.request.use()
service.interceptors.response.use() 

// 定义服务端接口返回的接口格式,其中data是主要数据
type Response<T = any> = {
  massage?: string;
  code: number;
  data: T;
};


export default <T>(config: AxiosRequestConfig) => {
  return new Promise<Response<T>>((res, rej) => {
    service
      .request<Response<T>>(config)
      .then((response) => {
        res(response.data);
      })
      .catch((err: any) => {
        rej(err);
      });
  });
};
// 定义一个导出方法,用此处的泛型T来进行接口数据类型的定义,因为在axios实例上有request函数可以传入泛型
//如下图

在这里插入图片描述

定义接口数据类型

import request from './request';

interface LIST {
  id: number;
  name: string;
}
const url = '/list';
request<LIST>({
  url
}).then((res)=> {
  res.data.id
})

编辑器已经有了返回数据字段的提示
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值