如何在项目声明文件中使用 Axios 类型

Posted

技术标签:

【中文标题】如何在项目声明文件中使用 Axios 类型【英文标题】:How to use Axios types in project declaration file 【发布时间】:2019-09-05 18:17:29 【问题描述】:

在我的项目类型声明文件中,我想使用一些 Axios 类型作为我的一些类型的一部分,但是their declarations are all exported。

我想在声明文件中使用AxiosResponseAxiosError,但是Axios 没有专用的@types。当您查看 Axiox 声明文件时,您可以看到所有接口和类型都已导出,这使得无论我如何设置我的 tsconfig.json,编译器都不会自动使用这些类型。

这是我的 tsconfig:


  "compilerOptions": 
    "target": "es2017",
    "outDir": "dist/main",
    "rootDir": "src",
    "moduleResolution": "node",
    "module": "commonjs",
    "declaration": true,
    "inlineSourceMap": true,
    "esModuleInterop": true, 
    ...
    "lib": ["es2017"],
    "types": ["axios"],
    "typeRoots": ["node_modules/@types", "types", "node_modules"]
  ,
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "./test/**/*"
  ]


我只是希望能够使用他们的接口来确保我期望的类型。

【问题讨论】:

刚刚发现这篇关于同一问题的帖子:***.com/questions/39040108/… 【参考方案1】:

这样的东西有用吗?

types/my/index.d.ts:

import  AxiosError  from "axios";

export interface MyType 
    error: AxiosError;
    p1: string;

src/index.ts(设置了一些示例字段):

import  MyType  from '../types/my';

let v1: MyType = 
    error: 
        config: 
            url: 'http:/example.com'
        ,
        name: 'name',
        message: 'message'
    ,
    p1: 'myMessage'

至少 IntelliSense 可以工作并且可以编译。请参阅 GitHub 中的代码here。

【讨论】:

以上是关于如何在项目声明文件中使用 Axios 类型的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 vue-cli3 创建的 Vue2 项目中使用 axios

如何将axios全局导入vue.js项目[重复]

如何使用axios在请求标头中发送clientIP

如何在反应项目和 Firebase 中使用带有 axios 的删除请求?

如何使用 axios 将文件数据正确上传到 rails 5 后端

如何在多个文件中分解 REACTJS 中的 Axios 调用?