@MishaXXL

Как типизировать fetch без as?

Как правильно типизировать функцию, которая возвращает промис или в любом случае при работе с fetch внутри нужно указывать через as, что она возвращает?
У меня получилось это сделать только при указании, что полученные данные as Res

type Res = {
    userId: number;
    id: number;
    title: string;
    completed: boolean;
}

const getData = async (url: string): Promise<Res> => {
    const result = await fetch(url).then(data => data.json()).catch(err => err.message) as Res
    return result
}
  • Вопрос задан
  • 276 просмотров
Решения вопроса 1
@historydev
Острая аллергия на анимешников
Fetch это промис.
Промис возвращает твою "data" и соответственно типизировав data и то, что возвращает callback, ты типизируешь данные которые он возвращает.

Однако catch здесь тоже нужно учесть, т.к. он возвращает Promise<any>, соответственно тебе нужно использовать примерно такую конструкцию:

const getData = async (url: string): Promise<Res | any> => await fetch(url).then((data: Response): Promise<Res> => data.json()).catch(err => err.message);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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