【问题标题】:Axios typescript customize AxiosRequestConfigaxios typescript 自定义 AxiosRequestConfig
【发布时间】:2020-03-05 18:10:20
【问题描述】:

我使用 React 和 axios,最近我在 axios 上创建了一个自定义配置,如下所示:

import $axios from 'helpers/axiosInstance'
$axios.get('/customers', { handlerEnabled: false })

但结果ts编译:

类型参数 '{ handlerEnabled: boolean; }' 不可分配给“AxiosRequestConfig”类型的参数。 对象字面量只能指定已知属性,而“AxiosRequestConfig”类型中不存在“handlerEnabled”。

如何在 AxiosRequestConfig 上分配新类型? 像这样axios<AxiosRequestConfig & newType>

不想使用像.d.ts这样的旧方法

【问题讨论】:

    标签: javascript reactjs typescript types axios


    【解决方案1】:

    您可以使用 typescript decleration 合并功能扩展任何库类型。 (docs)

    所以这应该可以完成工作:

    // theFileYouDeclaredTheCustomConfigIn.ts
    declare module 'axios' {
      export interface AxiosRequestConfig {
        handlerEnabled: boolean;
      }
    }
    

    【讨论】:

      【解决方案2】:
      // in axios.d.ts
      import 'axios';
      
      declare module 'axios' {   
          export interface AxiosRequestConfig {
              handlerEnabled?: boolean;   
          } 
      }
      

      【讨论】:

      • 请为您的代码添加一些解释。
      • A code-only answer is not high quality。虽然此代码可能很有用,但您可以通过说明其工作原理、工作方式、何时应该使用以及它的局限性来改进它。请edit您的回答包括解释和相关文档的链接。
      • 以防万一有人试图理解答案。您应该创建另一个包含上述内容的类型文件。如果您将其粘贴到您输入的 index.d.ts 中,它将破坏它们。
      猜你喜欢
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 2021-12-25
      • 1970-01-01
      • 2020-09-04
      • 2017-11-17
      • 2020-11-23
      相关资源
      最近更新 更多