http中定义类型,没有搞懂
来源:10-6 对axios进行二次封装处理

小雨点3545254
2023-11-14
interface Data {
[index: string]: unknown
}
interface Http {
get: (url: string, data?: Data, config?: AxiosRequestConfig) => Promise<AxiosResponse>
post: (url: string, data?: Data, config?: AxiosRequestConfig) => Promise<AxiosResponse>
put: (url: string, data?: Data, config?: AxiosRequestConfig) => Promise<AxiosResponse>
patch: (url: string, data?: Data, config?: AxiosRequestConfig) => Promise<AxiosResponse>
delete: (url: string, data?: Data, config?: AxiosRequestConfig) => Promise<AxiosResponse>
}
const http: Http = {
get(url, data, config) {
return instance.get(url, {
params: data,
...config
})
},
post(url, data, config) {
return instance.post(url, data, config)
},
put(url, data, config) {
return instance.put(url, data, config)
},
patch(url, data, config) {
return instance.patch(url, data, config)
},
delete(url, data, config) {
return instance.delete(url, {
data,
...config
})
}
}
老师,视频中这段代码什么意思,视频讲的太快了,没有听懂,能详细的讲解一下吗,
还有定义接口(interface Http)中有很多重复代码,怎么优化一下,能详细的讲解一下和优化吗
写回答
1回答
-
西门老舅
2023-11-15
你好,当我们调用 http.get()、http.post() 等方法的时候,需要传递参数,那么就需要对传递的参数进行TS的类型限制,interface Http 就是起到这个作用的。
如何优化?可以使用instance.request()来替代instance.get()、instance.post()等方法。
举例如下:
interface Http {
request(method: string, url: string, data?: Record<string, unknown>, config?: AxiosRequestConfig): Promise<AxiosResponse>;
}
const http: Http = {
async request(method, url, data, config) {
return instance.request({
method,
url,
data,
...config,
});
},
};
00
相似问题