Как использовать типы Axios в файле декларации проекта - PullRequest
0 голосов
/ 15 апреля 2019

В моем файле объявления типов проекта я хочу использовать некоторые типы Axios как часть некоторых из моих типов, но все их объявления экспортируются .

Я хочу использовать AxiosResponse и AxiosError в моем файле декларации, но для 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 голосов
/ 18 апреля 2019

Хотелось бы что-нибудь подобное?

types/my/index.d.ts * * 1004

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 здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...