Asynchroniczność
Awaited
To, co zostaje po await — niezależnie od tego, jak głęboko była zagnieżdżona obietnica.
Czym jest
Jedyne wbudowane na tej stronie, które się rekurencyjnie zagłębia. Modeluje await, a nie rozpakowanie Promise: obietnica obietnicy spłaszcza się dokładnie tak jak w czasie wykonania, a to, co obietnicą nie jest, przechodzi bez zmian. Przeczytanie definicji to najszybszy sposób, by zrozumieć, dlaczego zagnieżdżone obietnice nigdy nie były czymś, czym trzeba się zajmować.
Przykłady
Awaited<Promise<string>>→stringAwaited<Promise<Promise<number>>>→numberSpłaszczone do końca, bo
awaitrobi to samo.Awaited<string>→stringAwait na nie-obietnicy jest legalny i nic nie robi, a typ to odzwierciedla.
Każdy rozwinięty typ powyżej wypisał TypeScript 6.0.3, nie ręka człowieka.
Czego nie robi
- Nie rozpakowuje niczego wewnątrz obiektu.
Awaited<{ a: Promise<string> }>pozostaje bez zmian — to podąża zaawait, aawaitnie chodzi po twoich właściwościach. - Nie opisuje odrzucenia. Ścieżka błędu nie ma w TypeScripcie żadnego typu i dlatego złapany błąd jest
unknown.
Wniosek
Używaj Awaited<ReturnType<typeof fn>> dla rozwiązanego wyniku funkcji asynchronicznej. Ta para pojawia się częściej niż każde z osobna.

