TypeScript Essentials

Урок 10 · 11 хв

Async, fetch, реальний код

Як типізувати те, що приходить із сервера, — без самообману.

Це урок, заради якого зазвичай і вчать TS. async функція повертає Promise<T>. await знімає Promise — як у MDN: async. Дані з мережі — unknown, доки не перевірив: сервер не зобов'язаний дотримуватися твого типу.

fetch віддає Response. res.ok — це HTTP-статус, а не форма JSON. res.json() у типах DOM — Promise<any>. Доки сам не звузиш, компілятор погодиться з будь-якою етикеткою. Guard, Zod або генерація типів з OpenAPI — нормальні варіанти. as Post — ні.

Проміс як контейнер
fetch без брехні
AI

Можна спитати про це правило«Не типізуй fetch так»

Стани запиту — знову union

На цьому вже можна писати прод. Далі — декоратори, умовні типи в бібліотеках, infer, ambient-модулі. Це не «найважливіше». Коли знадобиться прочитати тип із чужої ліби — повернешся до Advanced Types.

AI

Можна спитати про цей пункт«Суть уроку»

Перевірка

Закріпи, поки не пішов далі

  1. 1. Який тип у await fetch(url).then(r => r.json()) без своїх типів?

  2. 2. Що повернути з async-функції, яка віддає User?