Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    Asíncrono

    Awaited

    Lo que obtienes tras un await — sin importar cuántas promesas de profundidad hubiera.

    Qué es

    El único integrado de esta página que recursa. Modela `await`, no el desempaquetado de `Promise`: una promesa de una promesa se aplana, igual que en tiempo de ejecución, y lo que no es promesa pasa sin cambios. Leer la definición es la forma más rápida de entender por qué las promesas anidadas nunca fueron algo de lo que ocuparse.

    Ejemplos

    • Awaited<Promise<string>>
      string
    • Awaited<Promise<Promise<number>>>
      number

      Aplanado del todo, porque `await` hace lo mismo.

    • Awaited<string>
      string

      Hacer await de algo que no es una promesa es legal y no hace nada, y el tipo lo refleja.

    Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.

    Lo que no hace

    • No desempaqueta nada dentro de un objeto. `Awaited<{ a: Promise<string> }>` no cambia — esto sigue a `await`, y `await` no recorre tus propiedades.
    • No describe el rechazo. La vía de error no tiene tipo alguno en TypeScript, y por eso un error capturado es `unknown`.

    Conclusión

    Usa `Awaited<ReturnType<typeof fn>>` para el resultado resuelto de una función asíncrona. Ese par aparece más que cualquiera de los dos por separado.