Шут | Тип логический не может быть назначен типу HttpError - PullRequest
0 голосов
/ 17 апреля 2019

Я преобразовал эту функцию в оператор switch, но теперь я получаю эту ошибку в моих тестовых пакетах.

Type boolean is not assignable to HttpError

Это утверждение if else:

  handleSubmitError = (
    error: HttpError,
    { setSubmitting, setErrors, setStatus }: FormikActions<ITypeOfValues>
  ) => {
    const genericError = 'An error occurred. Please try again';
    setSubmitting(false);
    if (!error.response || (error.response && !error.response.data)) {
      setStatus(genericError);
    } else if (
      error.response &&
      error.response.status === 400 &&
      Array.isArray(error.response.data) &&
      error.response.data.length > 0
    ) {
      setErrors(mapServerValidationErrorsToFormik(error.response.data));
    } else {
      setStatus(error.response.data.toString() ? error.response.data.toString() : genericError);
    }
  };

Итак, это мое преобразование в оператор switch:

  handleSubmitError = (
    error: LensesHttpError,
    { setSubmitting, setErrors, setStatus }: FormikActions<ITypeOfValues>
  ) => {
    const genericError = 'An error occurred. Please try again';
    setSubmitting(false);
    switch (error) {
      case error === !error.response || (error.response && !error.response.data):
        return setStatus(genericError);
      case error === error.response &&
        error.response.status === HTTP_STATUS_CODE.BAD_REQUEST &&
        Array.isArray(error.response.data) &&
        error.response.data.length > 0:
        return setErrors(mapServerValidationErrorsToFormik(error.response.data));
      default:
        return setStatus(
          error.response.data.toString() ? error.response.data.toString() : genericError
        );
    }
  };

Это тип HttpError: export interface HttpError extends AxiosError {}

И это для AxiosError:

export interface AxiosError extends Error {
  config: AxiosRequestConfig;
  code?: string;
  request?: any;
  response?: AxiosResponse;
}

Что я делаю не так и почему мои тесты не пройдены. Ι означает, что это логические значения, которые я здесь передаю по ошибке? Спасибо !!

...