拿起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]])
如果使用了这些方法,我们就不必在config中指定url、method、data这些属性了。
从需求上来看,axios方法不再单单是一个方法,更像是一个混合对象,本身是一个方法,又有很多方法属性,接下来我们就来实现这个混合对象。
接口类型定义
根据需求分析,混合对象axios本身是一个函数,我们可基于类的方式去实现它的方法属性,然后把这个类的原型属性和自身属性再拷贝到axios上。
我们先来给axios混合对象定义接口
types/index.ts:
拿起Typescript做一个轮子(五)
文章图片

拿起Typescript做一个轮子(五)
文章图片

实现混合对象
拿起Typescript做一个轮子(五)
文章图片

拿起Typescript做一个轮子(五)
文章图片

拿起Typescript做一个轮子(五)
文章图片

拿起Typescript做一个轮子(五)
文章图片

拿起Typescript做一个轮子(五)
文章图片

拿起Typescript做一个轮子(五)
文章图片

拿起Typescript做一个轮子(五)
文章图片

实现axios函数重载
拿起Typescript做一个轮子(五)
文章图片



【拿起Typescript做一个轮子(五)】

    推荐阅读