typescript拓展axios的get方法类型声明
需求是要拓展 axios 的 get 方法的类型
首先遇到的第一个坑是 declare 会覆盖原有类型的问题
1 | declare module "axios" {} |
如果这样直接这样写的话,vscode 会报错,axios 自带的类型会被覆盖。记得之前也有过同样的需求,也是这样做的,搞了半天才发现
1 | import axios from "axios"; // 要把axios import进来,vscode就没报错了 |
然后是 axios 的 get 方法是写在 class Axios 里的
1 | import axios from "axios"; |
我项目是用的 axios.create 方法创建出来的,类型是 AxiosInstance,AxiosInstance 是一个 interface,所以就可以拓展了
1 | import axios from "axios"; |
axios 默认导出的是 AxiosStatic 类型,所以没有用 axios.create 的话,拓展 AxiosStatic 就行了
1 | declare const axios: AxiosStatic; |
补充一个 axios 类型的另外一个问题
axios 的 AxiosRequestConfig 里的 params 属性,平时我用 get 方法的时候传 query 一般是用这个属性传,但是 AxiosRequestConfig 里 params 是 any 类型
如果需要声明 params 的类型的话可以这样
1 | import axios from "axios"; |