Funkcje
ReturnType
Typ, który funkcja zwraca.
Czym jest
Typ warunkowy z `infer` w pozycji zwracanej — kanoniczny przykład dopasowywania wzorca do typu. `infer R` deklaruje zmienną, którą kompilator wypełnia przez dopasowanie, a gałąź prawdziwa to miejsce, gdzie można jej użyć.
Przykłady
ReturnType<typeof makeUser>→{ id: number; name: string; }ReturnType<() => void>→voidReturnType<() => string | number>
→string | numberUnia w typie zwracanym wraca w całości; nic się tu nie dystrybuuje.
Każdy rozwinięty typ powyżej wypisał TypeScript 5.9.3, nie ręka człowieka.
Czego nie robi
- Nie przyjmuje *wartości* funkcji. Przyjmuje *typ* funkcji, i dlatego zawsze kończy się na `ReturnType<typeof fn>`.
- Nie rozstrzyga przeciążeń tak jak wywołanie. Dla przeciążonej funkcji podaje ostatnią sygnaturę, a nie tę, którą wybrałyby twoje argumenty.
Wniosek
`typeof` przenosi ze świata wartości do świata typów; `ReturnType` pracuje już w nim. Niemal każde użycie jednego wiąże się z drugim.