godsplane
@godsplane

Как правильно присваивать типы результатам выполнения функций которые вернули ошибку?

Например есть такая функция.

export const usersPassportLogin = async (
  usersPassportLoginBody: UsersPassportLoginBody,
  options?: RequestInit
): Promise<usersPassportLoginResponse> => {
  return customFetch<Promise<usersPassportLoginResponse>>(getUsersPassportLoginUrl(), {
    ...options,
    method: 'POST',
    headers: { 'Content-Type': 'application/json', ...options?.headers },
    body: JSON.stringify(usersPassportLoginBody)
  });
};


Она возвращет промис
export type usersPassportLoginResponse = {
  data: UsersPassportLogin200;
  status: number;
};


Но в случае ошибки она возвращает ValidationError

export interface ValidationError {
  errors: ValidationErrorErrors;
  message: string;
}


Исходную функция я менять не могу, как мне в случае ошибки поймать ее и обрабатывать уже как ошибку? Так как в исходном ответе поля errors нет.
Менять исходную функцию я не могу, так как она сгенерированна.
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
@pro100Code
TechnoCraft Designer Developer
В такой ситуации, когда ты не можешь менять исходную функцию, но хочешь обрабатывать ошибки, можно сделать дополнительный слой обработки в месте, где вызывается функция. Ты можешь использовать try-catch, чтобы перехватывать исключения и обрабатывать их как ValidationError. Вот пример:

try {
  const response = await usersPassportLogin(usersPassportLoginBody, options);
  // Успешный ответ обрабатывай как обычно
  console.log('Login successful:', response);
} catch (error) {
  // Здесь мы проверим, является ли ошибка ValidationError
  if ((error as ValidationError).errors) {
    const validationError = error as ValidationError;
    console.log('Validation Error:', validationError.errors);
  } else {
    console.log('Unexpected Error:', error);
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы