Axios + Typescript: как передать параметр типа "ResponseType"? - PullRequest
0 голосов
/ 11 июля 2019

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)

Проблема : предупреждение о наборе текста linterя говорю, что строку типа нельзя присвоить типу ResponseType.

Также попытался: Конечно, я не могу использовать синтаксис

 responseType: ResponseType.json

Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 11 июля 2019

Проблема в том, что 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'
};
0 голосов
/ 11 июля 2019

Исправлено с использованием явного приведения

responseType: <ResponseType> 'json'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...