拿起Typescript做一个轮子(五)
扩展接口
需求分析
为了更加方便的使用axios发送请求,我们可以为所有支持请求方法扩展一级接口:
- axios.request(config)
- axios.get(url, [,config])
- axios.delete(url, [,config])
- axios.header(url, [,config])
- axios.options(url, [,config])
- axios.post(url,[ ,data[,config]])
- axios.put(url,[ ,data[,config]])
- axios.patch(url,[ ,data[,config]])
从需求上来看,axios方法不再单单是一个方法,更像是一个混合对象,本身是一个方法,又有很多方法属性,接下来我们就来实现这个混合对象。
接口类型定义
根据需求分析,混合对象axios本身是一个函数,我们可基于类的方式去实现它的方法属性,然后把这个类的原型属性和自身属性再拷贝到axios上。
我们先来给axios混合对象定义接口
types/index.ts:
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/a5cf9d94afce40999ecad973a5c3cc11.jpg)
文章图片
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/9c2b6aa8d25b414f871075a51d13b1e7.jpg)
文章图片
实现混合对象
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/36348fad8793415e92ed448e75d1871e.jpg)
文章图片
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/f9eb7c92765a4e6dba8daf09642e4158.jpg)
文章图片
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/c7322865bcb144e39037c5201a453254.jpg)
文章图片
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/476ad4aa4635494a9128cbf06930c08a.jpg)
文章图片
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/3dcb96f041234f87938b3bb2f4ffbdbb.jpg)
文章图片
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/1ab4fc026d6948fcbfb51ef26030c688.jpg)
文章图片
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/1da122edb48948078b311609f324245b.jpg)
文章图片
实现axios函数重载
![拿起Typescript做一个轮子(五)](https://img.it610.com/image/info8/4079d1252da54c5292c977d9150bed2e.jpg)
文章图片
【拿起Typescript做一个轮子(五)】
推荐阅读
- 我要做大厨
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 我从来不做坏事
- 子龙老师语录
- 做一件事情的基本原理是什么()
- 做个俗物有什么不好
- 28岁|28岁,做一个通透又自由的姑娘。
- 良心
- 原生家庭之痛与超越
- 我喜欢做菜,是因为懂得了什么是爱