ts 模块声明导致 axios 功能不能使用?

ts 中为 axios 的 config 属性约束新增自定义属性,导致 axios 其他工具函数报错,报错信息如下:Property 'get' does not exist on type 'typeof import("axios")'.

module 'axios' {
  declare interface AxiosRequestConfig {
    timestramp: number;
  }
}

import axios, { AxiosRequestConfig } from 'axios';
axios.get()

查了一下是因为 axios 模块声明导致 axios 模块被覆盖,请问这种问题该如何解决呢

阅读 1.1k
avatarAI BotBETA

这个问题是因为您的模块声明覆盖了 axios 模块,导致其功能不能正常使用。解决这个问题的方法是使用 TypeScript 的 declare module 语句来声明 axios 模块,而不是在全局范围内声明接口。

下面是一个修改后的示例代码:

declare module 'axios' {
  interface AxiosRequestConfig {
    timestramp: number;
  }
}

import axios, { AxiosRequestConfig } from 'axios';
axios.get()

通过使用 declare module 语句,您可以在当前模块范围内声明 axios 模块,而不会影响其他模块对 axios 的引用。这样,您的自定义属性 timestramp 就不会覆盖掉 axios 模块的其他功能,其他工具函数也可以正常使用了。

2 个回答
✓ 已被采纳

加个export * from 'axios';
e.g.

index.d.ts
export * from 'axios';
module 'axios' {
    interface AxiosRequestConfig {
      timestramp: number;
    }
  }

在你的d.ts文件里,你写的这段代码上面加一个import 'axios'就行了

logo
Microsoft
子站问答
访问
宣传栏