美文网首页
4-2、axios函数重载

4-2、axios函数重载

作者: Eileen_1d88 | 来源:发表于2019-12-06 13:17 被阅读0次

    因为我们要实现

    axios(url, comfig)
    axios(comfig)
    

    这2种请求方式,所以我们需要对request方法进行重载。

    request(url: string | AxiosRequestConfig, config?: AxiosRequestConfig): AxiosPromise {
        config = config || {}
        if (typeof url === 'string') {
          config.url = url
        } else {
          config = url
        }
        return dispatchRequest(config)
      }
    

    src/types/index.ts

    interface AxiosInstance extends Axios {
      (config: AxiosRequestConfig): AxiosPromise
      (url: string, config?: AxiosRequestConfig): AxiosPromise
    }
    
    编写demo
    axios('/api/extend/post', {
      method: 'post',
      data: {
        msg: 'hi1'
      }
    })
    
    axios.request({
      url: '/api/extend/post',
      method: 'post',
      data: {
        msg: 'hello'
      }
    })
    

    至此,我们实现了axios函数的重载。另外,官方axios支持一种能力,我们可以去定义返回数据的类型,并在请求的时候制定该类型,然后在响应数据中我们就可以获取到该类型。接下来我们就来实现这个feature。

    相关文章

      网友评论

          本文标题:4-2、axios函数重载

          本文链接:https://www.haomeiwen.com/subject/xvgsgctx.html