Funciones
ReturnType
El tipo que devuelve una función.
Qué es
Un tipo condicional con `infer` en la posición de retorno — el ejemplo canónico de encajar un patrón sobre un tipo. `infer R` declara una variable que el compilador rellena al emparejar, y la rama verdadera es donde puedes usarla.
Ejemplos
ReturnType<typeof makeUser>→{ id: number; name: string; }ReturnType<() => void>→voidReturnType<() => string | number>
→string | numberUn tipo de retorno de unión vuelve entero; aquí no se distribuye nada.
Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.
Lo que no hace
- No toma un *valor* de función. Toma un *tipo* de función, y por eso siempre acabas escribiendo `ReturnType<typeof fn>`.
- No resuelve sobrecargas como lo haría una llamada. Ante una función sobrecargada informa de la última firma, no de la que habrían elegido tus argumentos.
Conclusión
`typeof` cruza del mundo de los valores al de los tipos; `ReturnType` trabaja ya dentro. Casi todo uso de uno implica el otro.