typescript-axios:重写axios.get以使用axios.request,它将显示Type';承诺<;AxiosResponse<;未知>&燃气轮机';不可分配给类型';承诺<;R>';
index.ts:typescript-axios:重写axios.get以使用axios.request,它将显示Type';承诺<;AxiosResponse<;未知>&燃气轮机';不可分配给类型';承诺<;R>';,typescript,axios,Typescript,Axios,index.ts: import { create, InitFunctionInterface } from './create'; import { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosPromise } from 'axios'; export interface TmsAxiosInterface extends AxiosInstance { get<T = any, R = AxiosRespo
import { create, InitFunctionInterface } from './create';
import { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosPromise } from 'axios';
export interface TmsAxiosInterface extends AxiosInstance {
get<T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig): Promise<R>;
delete<T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig): Promise<R>;
create?: InitFunctionInterface;
}
const $http: TmsAxiosInterface = create();
$http.create = create;
export default $http;
从“/create”导入{create,InitFunctionInterface};
从“axios”导入{AxiosInstance、AxiosRequestConfig、AxiosResponse、AxiosPromise};
导出接口TmsAxiosInterface扩展了AxiosInstance{
获取(url:string,config?:AxiosRequestConfig):承诺;
删除(url:string,config?:AxiosRequestConfig):承诺;
创建?:初始化函数接口;
}
const$http:TmsAxiosInterface=create();
$http.create=create;
导出默认$http;
创建.ts
import axios, { AxiosPromise, AxiosRequestConfig, AxiosResponse } from 'axios';
import { defaultConfig, TmRequestConfig, headers } from './defaultConfig';
import { requestInterceptor } from './request.interceptor';
import {
responseInterceptorOnError,
responseInterceptorOnSuccess
} from './response.interceptor';
// import merge = require('lodash.merge');
import { merge } from 'lodash';
import { TmsAxiosInterface } from './index';
export interface InitFunctionInterface {
(config?: TmRequestConfig): TmsAxiosInterface;
}
export const create: InitFunctionInterface = (
config: TmRequestConfig = {}
): TmsAxiosInterface => {
const mergeConfig: TmRequestConfig = merge(
{
...defaultConfig,
headers: {
...headers,
// 'TM-Header-Environment-Token':
// typeof sessionStorage !== undefined
// ? sessionStorage.getItem('environmentToken')
// : undefined
}
},
config
);
const http: TmsAxiosInterface = axios.create(mergeConfig);
if (config.requestInterceptor) {
http.interceptors.request.use(config.requestInterceptor);
}
if (config.responseInterceptor) {
http.interceptors.response.use(config.responseInterceptor);
}
http.interceptors.request.use(requestInterceptor);
http.interceptors.response.use(
responseInterceptorOnSuccess,
responseInterceptorOnError
);
http.get = function<T>(
url: string,
data: any = {},
config: AxiosRequestConfig = {}
): Promise<AxiosResponse<T>> {
return http.request<T>({
url,
params: data,
...config
});
};
http.delete = function<T>(
url: string,
data: any = {},
config: AxiosRequestConfig = {}
): Promise<AxiosResponse<T>> {
return http.request<T>({
url,
method: 'delete',
data,
...config
});
};
return http;
};
import axios,{AxiosPromise,AxiosRequestConfig,AxiosResponse}从“axios”导入;
从“/defaultConfig”导入{defaultConfig,TmRequestConfig,headers};
从“./request.interceptor”导入{requestInterceptor};
进口{
响应接收器或响应器,
ResponseInterceptor成功
}来自“./response.interceptor”;
//导入合并=require('lodash.merge');
从“lodash”导入{merge};
从“./index”导入{TmsAxiosInterface};
导出接口InitFunctionInterface{
(配置?:TmRequestConfig):tmaxiosinterface;
}
导出常量创建:InitFunctionInterface=(
config:TmRequestConfig={}
):TmsAxiosInterface=>{
const mergeConfig:TmRequestConfig=merge(
{
…默认配置,
标题:{
…标题,
//“TM头环境令牌”:
//会话存储的类型!==未定义
//?sessionStorage.getItem('environmentToken')
//:未定义
}
},
配置
);
const http:TmsAxiosInterface=axios.create(mergeConfig);
if(config.requestInterceptor){
http.interceptors.request.use(config.requestInterceptor);
}
if(配置响应接收器){
http.interceptors.response.use(config.responseInterceptor);
}
http.interceptors.request.use(requestInterceptor);
http.interceptors.response.use(
响应接收器成功,
响应接收器
);
http.get=函数(
url:string,
数据:any={},
配置:AxiosRequestConfig={}
):承诺{
返回http.request({
网址,
参数:数据,
…配置
});
};
http.delete=函数(
url:string,
数据:any={},
配置:AxiosRequestConfig={}
):承诺{
返回http.request({
网址,
方法:“删除”,
数据,
…配置
});
};
返回http;
};
和打字脚本显示:
(方法)TmsAxiosInterface.get(url:string,config?:AxiosRequestConfig |未定义):承诺
Type'(url:string,data?:any,config?:AxiosRequestConfig)=>Promise'不可分配给Type'(url:string,config?:AxiosRequestConfig |未定义)=>Promise'。
类型“Promise”不可分配给类型“Promise”。
类型“AxiosResponse”不可分配给类型“R”。
“R”可以用与“AxiosResponse”无关的任意类型实例化。ts(2322)