老师,请教一下axios源码的泛型问题
来源:2-17 声明文件 第一部分

追风之神
2022-07-28
后面的语句我看的懂,就是参数类型是(string,config),返回是Promise的类型
(url: string, config?: AxiosRequestConfig<D>): Promise<R>
但是我前面框起来的部分的泛型,没看懂,这里的T,R,D分别指代的什么。看着不像方法的参数或者返回值。
写回答
1回答
-
张轩
2022-07-28
同学你好
这个类型需要深究下去的,你现在理解起来有可能稍微困难点,但是没关系,我简单说下,你看到的三个泛型 T R D,和我们接触的泛型功能是一样的,接受个性化的定制,也就是在 get 调用的时候传入用户可能想定制的类型,特别注意这三个都有默认值,所以不传入也没事。那么这三个类型流入哪里了呢?
config接受了一个 D,最后返回接受一个 R。
所以当你使用 get 的时候,比如
const res = await get(url, config) // 这个 res 会自动获取类型,是 R 类型的,假如你想自定义什么返回的数据结构,它都会联想出来。 再举例 interface MyResp { name: string } const res = await get<MyResp>(url, config) 这个时候 res.data 就是 MyResp 类型,方便你下一步操作。 config 同理。
其实就是千方百计的想让所有的数据结构都获得类型,可以自动补全和修正错误。
10
相似问题