是不是可以这么理解修改后的request方法?

来源:7-4 -1 axios 函数重载 - 需求分析+ 重载实现+ demo 编写

fatbin

2019-07-03

如果单独使用Axios类,是不是可以理解修改后的参数都是any类型的request方法其实跟直接使用js差不多(除了限制了返回类型)?

另外能不能对类的方法进行重载?类似在Axios接口里面定义多个request方法

=update=
对于第一个问题,其实我是觉得Axios类的request方法写起来跟直接写js差不多(参数都是any类型)。

request(url: any, config?: any): AxiosPromise {
    if (typeof url === 'string') {
      if (!config) {
        config = {}
      }
      config.url = url
    } else {
      // 如果url不是一个字符串,意味这这里直接就传入了一个config配置
      config = url
    }
    return dispatchRequest(config)
  }

之所以能如此“随意”是不是因为我们的Axios类最终还是通过配合AxiosInstance接口使用的?AxiosInstance接口就会对参数的“结构”进行限制?

写回答

2回答

ustbhuangyi

2019-07-09

写 any 是为了实现重载,对外提供的接口对类型有限制就可以了

1
1
fatbin
非常感谢!
2019-07-23
共1条回复

ustbhuangyi

2019-07-04

没太明白你提的第一个问题,是不是可以配合代码演示一下?
第二个问题是可以的啊,这个课程不就去 Axios 类的 request 方法重载了么,但是实现的话并不能在类上定义多个 request 方法,只能在内部实现,而在类型定义的时候,可以定义多个接口。因为 TypeScript 终究是要编译成 JavaScript,不可能跨越 JavaScript 的语法限制。

0
1
fatbin
老师,我更新了一下问题一的描述。不知道这次有没有说清楚
2019-07-08
共1条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2629 学习 · 877 问题

查看课程