Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
typescript-axios:重写axios.get以使用axios.request,它将显示Type';承诺<;AxiosResponse<;未知>&燃气轮机';不可分配给类型';承诺<;R>';_Typescript_Axios - Fatal编程技术网

typescript-axios:重写axios.get以使用axios.request,它将显示Type';承诺<;AxiosResponse<;未知>&燃气轮机';不可分配给类型';承诺<;R>';

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

index.ts:

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)