Awaited<Type>

Pobiera typ wartości, którą da await na obietnicy.

Na tej stronie

Przykład

#
TypeScript
async function loadCourses() {
  return [
    { title: 'HTML i CSS', modules: 11 },
    { title: 'Python', modules: 12 }
  ]
}

type Courses = Awaited<ReturnType<typeof loadCourses>>
// type Courses = { title: string; modules: number }[]

const courses: Courses = await loadCourses()
console.log(courses.map((c) => c.title))
Wynik
['HTML i CSS', 'Python']

Definicja i zastosowanie

#

Awaited<Type> rozpakowuje obietnice tak, jak robi to await: Awaited<Promise<string>> to string. Radzi sobie też z obietnicami zagnieżdżonymi, rozpakowując je do końca.

Najczęściej używa się go z funkcjami asynchronicznymi: Awaited<ReturnType<typeof fetchCourses>> to typ danych, które faktycznie otrzymasz po await fetchCourses().

Na typach, które nie są obietnicami, Awaited nic nie zmienia, więc można go bezpiecznie stosować w typach generycznych.

Składnia

#
Składnia
type Wartosc = Awaited<TypObietnicy>

Parametry typu

#
  • Type

    dowolny typ

    Typ do rozpakowania z obietnic.

Dobre praktyki

#
  • Zapamiętaj wzór Awaited<ReturnType<typeof fn>> dla funkcji asynchronicznych.
  • Typ Promise.all na tablicy obietnic też jest liczony przez Awaited dla każdego elementu.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.