import { AxiosInstance, AxiosPromise, AxiosRequestConfig, AxiosResponse, AxiosInterceptorManager } from 'axios' // 相对于 `Axios` 附加的内容 export interface MockOptions { status?: number statusText?: string headers?: any data?: any delay?: number error?: string } export interface SignatureOptions { key: string secret: string debug?: boolean } export interface JsHttpRequestConfig extends AxiosRequestConfig { mock?: MockOptions signature?: SignatureOptions } export interface JsHttpResponse extends AxiosResponse { config: JsHttpRequestConfig } // 重写跟 `AxiosRequestConfig` 相关的类型 export interface JsHttpInstance { (config: JsHttpRequestConfig): AxiosPromise (url: string, config?: JsHttpRequestConfig): AxiosPromise defaults: JsHttpRequestConfig interceptors: { request: AxiosInterceptorManager response: AxiosInterceptorManager } getUri(config?: JsHttpRequestConfig): string request>(config: JsHttpRequestConfig): Promise get>(url: string, config?: JsHttpRequestConfig): Promise delete>(url: string, config?: JsHttpRequestConfig): Promise head>(url: string, config?: JsHttpRequestConfig): Promise options>(url: string, config?: JsHttpRequestConfig): Promise post>(url: string, data?: any, config?: JsHttpRequestConfig): Promise put>(url: string, data?: any, config?: JsHttpRequestConfig): Promise patch>(url: string, data?: any, config?: JsHttpRequestConfig): Promise } export interface JsHttpStatic extends JsHttpInstance { create(config?: JsHttpRequestConfig): JsHttpInstance } declare const jshttp: JsHttpStatic export default jshttp