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

时间:2019-04-15 17:47:15

标签: typescript types axios

在我的项目类型声明文件中,我想将某些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/**/*"
  ]
}

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

1 个答案:

答案 0 :(得分:0)

这样的作品行吗?

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中的代码。