объявить тип обещания в машинописном тексте функции - PullRequest
1 голос
/ 05 мая 2020

Я где-то видел этот код, просто любопытно, зачем нужно указывать Promise в возвращаемом типе? разве функция не возвращает данные, являющиеся объектом? а что за | null for?

const getSomething = async (
  id: string
): Promise<UserData | null> => {
  try {
    const { data } = await axios.get(
      `${API}/user?id=${id}`
    );
    return data;
  } catch (err) {
    if (err.response) {
      return err.response.data;
    }
    return null;
  }
};

1 Ответ

1 голос
/ 05 мая 2020

Асинхронные c функции всегда возвращают Promises - таким образом, асинхронные await s можно ожидать внутри функции, а результат можно использовать вне функции.

Здесь getSomething пытается получить данные из вызова ax ios. Если вызов завершается успешно, данные просто возвращаются:

return data;

Но если вызов не завершается успешно, вместо этого возвращается одно из следующего:

if (err.response) {
  return err.response.data;
}
return null;

Если вызов axios выбрасывает, и нет свойства err.response, то возвращается null. Если вы не указали | null, функция getSomething будет набрана неправильно.

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