Axios + Typescript:如何传递“ ResponseType”类型的参数?

时间:2019-07-11 10:22:20

标签: typescript axios

Axios将ResponseType定义为

export type ResponseType = 
  | 'arraybuffer' 
  | 'blob' 
  | 'document' 
  | 'json' 
  | 'text' 
  | 'stream'

我正在尝试将配置传递给axios.post

const config = {
        headers: {
            'X-Requested-With': 'XMLHttpRequest',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Host': HOST_HEADER,
        },
        responseType: 'json'
 }

 const data_to_post = { .... omitted ... }

 return axios.post(HOST, data_to_post, config)

问题:打字机皮棉机警告我说不能将类型字符串分配给ResponseType类型。

也尝试过:我当然不能使用语法

 responseType: ResponseType.json

我该如何解决?

2 个答案:

答案 0 :(得分:2)

问题在于Typescript会推断config为类型

{
    headers: {
        'X-Requested-With': string;
        'Content-Type': string;
        'Host-Header': string;
    };
    responseType: string;
}

Typescript不知道您正在尝试为Axios创建配置对象。您可以将整个对象显式键入为AxiosRequestConfig,也可以显式键入responseType: 'json'的类型为ResponseType

const config: AxiosRequestConfig = {
  headers: {
    'X-Requested-With': 'XMLHttpRequest',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Host-Header': 'dsa',
  },
  responseType: 'json'
};

答案 1 :(得分:0)

使用显式投射固定

responseType: <ResponseType> 'json'