请问老师为什么不会报错
来源:7-4 -1 axios 函数重载 - 需求分析+ 重载实现+ demo 编写

hy_wang
2020-11-07
请问下老师,这章节我有一个小疑问。
关于如果调用axios.request(config),这是我仅仅传入了一个参数。
AxiosInstance 这个interface规定了request接受一个参数没错,但是
这段逻辑,new Axios这个类返回context实例中,存在一个request原型方法,这时request方法在类中定义的是接受两个any参数。可是createInstance方法返回的AxiosInstance类型定义上要求原型上的request只有一个config参数。
简单描述就是说返回的instance这个实例,是AxiosInstance类型。AxiosInstance类型定义原型上的request仅接受一个参数。而context实例上的request方法确实上接受两个参数。
这是类上的request方法参数定义,只接受一个config参数且要求AxiosRequestConfig类型。
这是interface中的request方法定义。
这时TS为什么不会报错,明明参数个数对不上以及参数类型也对不上。
3回答
-
虽然是两个参数,但是注意第一个是 any,第二个也是 any,而且第二个还是可选参数,说明可以是任意类型的一个参数,也可以是任意类型的两个参数,所以这种定义是匹配类型定义的。
052020-11-09 -
hy_wang
提问者
2020-11-07
老师这是我的理解
00 -
hy_wang
提问者
2020-11-07
老师我仍然认为本身request类型定义一个参数,但是类中的原型request方法有两个参数定义。那么就会报错,但是因为课程中return的时候进行了断言所以就不会报错。
012020-11-09
相似问题