用什么办法能在不引入interface的情况下,让TS编译器能识别Axios的数据类型

一个项目,用Axios+Typescript,我有这么一段儿代码。

import { AxiosRequestConfig, AxiosResponse } from 'axios'

function requestIntercepter(config: AxiosRequestConfig): (AxiosRequestConfig | Promise<AxiosRequestConfig>) {
  return config
}

为了能识别config的类型,我必须要引入两个interface,让我很难受。有没有办法在不引入的情况下识别到这两个数据类型:

尝试过的办法:

  1. 下载@types/axios库(已丢弃不维护)
  2. 在tsconfig.json里加入了rootType:“node_modules/axios/index.d.ts”
  3. 在自己的type申明文件里用 /// <reference path="../node_modules/axios/index.d.ts">

以上三个方法均不奏效,难道就没有啥办法来解决这个问题?强迫症看着真的好难受呀。

阅读 2.9k
2 个回答

直接写匿名函数,啥interface都不用引,可以正确代码提示

axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });
  1. 必须声明类型才能访问对应类型的属性和方法
  2. axios有官方的index.d.ts,当你npm install axios时自动下载下来的,不需要其他操作处理声明文件问题

index.d.ts

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题