改写axios的返回值的TS类型
- axios的二次封装,让axios和TS类型组合使用时更加方便
Axios 内置类型声明解读
export class Axios {
request<T = any, R = AxiosResponse<T>>(config): Promise<R>;
get<T = any, R = AxiosResponse<T>>(url: string, config): Promise<R>;
}
export interface AxiosResponse<T = any, D = any> {
data: T;
}
TS类型封装
import axios, { type Method } from "axios";
...
export interface ApiRes<T = unknown> {
code: string;
msg: string;
result: T;
}
export const http = <T>(method: Method, url: string, submitData?: object) => {
return instance.request<ApiRes<T>>({
url,
method,
[method.toUpperCase() === "GET" ? "params" : "data"]: submitData,
});
};
export default instance;