Asincronía tipada con Promise y async/await

Gestiona datos remotos con tipos consistentes y flujos de error previsibles.

En asincronía, los errores de tipos suelen venir de respuestas mal modeladas y cadenas de promesas sin contrato claro.

Tipar Promise correctamente te obliga a decidir qué devuelve cada paso y cómo se propagan fallos.

Con async/await, la legibilidad mejora, pero solo si los tipos de retorno y error están diseñados explícitamente.

El objetivo es construir flujos asíncronos predecibles para UI, servicios y sincronización de datos.

  • Una Promise sin tipo claro acaba contaminando el flujo con any o unknown mal tratados.
  • Define tipos de respuesta desde la capa de fetch/cliente HTTP, no en cada consumidor.
  • Evita funciones async que devuelven estructuras distintas según rama sin discriminar explícitamente.
  • Cuando encadenas transformaciones, tipa cada etapa para detectar incompatibilidades antes de runtime.
  • throw sin criterio dificulta a consumidores saber qué deben manejar.

Promesas con contrato explícito

Una Promise sin tipo claro acaba contaminando el flujo con any o unknown mal tratados.

Define tipos de respuesta desde la capa de fetch/cliente HTTP, no en cada consumidor.

Evita funciones async que devuelven estructuras distintas según rama sin discriminar explícitamente.

Cuando encadenas transformaciones, tipa cada etapa para detectar incompatibilidades antes de runtime.

Errores asíncronos modelados

throw sin criterio dificulta a consumidores saber qué deben manejar.

Modela errores esperables (timeout, 401, validación) con tipos discriminados en vez de mensajes string sueltos.

En UI, ese modelado permite mapear estado de error a mensajes y acciones concretas sin condicionales caóticas.

Centraliza normalización de error en una capa para evitar duplicación de try/catch inconsistentes.

Concurrencia y cancelación en flujos reales

No toda operación asíncrona debe completarse: en UI, cancelar a tiempo evita estados corruptos.

Modela peticiones en curso y canceladas para no sobrescribir estado con respuestas obsoletas.

En operaciones paralelas, tipa resultados agregados (all/allSettled) para tratar fallos parciales con intención.

Un manejo explícito de concurrencia mejora experiencia de usuario y reduce race conditions difíciles de depurar.

TypeScript
11

Asincronía tipada con Promise y async/await

Gestiona datos remotos con tipos consistentes y flujos de error previsibles.

Código del tema: flujo async seguro

📘 Teoría

Promesas con contrato explícito

Una Promise sin tipo claro acaba contaminando el flujo con any o unknown mal tratados.

1

Define tipos de respuesta desde la capa de fetch/cliente HTTP, no en cada consumidor.

2

Evita funciones async que devuelven estructuras distintas según rama sin discriminar explícitamente.

3

Cuando encadenas transformaciones, tipa cada etapa para detectar incompatibilidades antes de runtime.

Errores asíncronos modelados

throw sin criterio dificulta a consumidores saber qué deben manejar.

1

Modela errores esperables (timeout, 401, validación) con tipos discriminados en vez de mensajes string sueltos.

2

En UI, ese modelado permite mapear estado de error a mensajes y acciones concretas sin condicionales caóticas.

3

Centraliza normalización de error en una capa para evitar duplicación de try/catch inconsistentes.

Concurrencia y cancelación en flujos reales

No toda operación asíncrona debe completarse: en UI, cancelar a tiempo evita estados corruptos.

1

Modela peticiones en curso y canceladas para no sobrescribir estado con respuestas obsoletas.

2

En operaciones paralelas, tipa resultados agregados (all/allSettled) para tratar fallos parciales con intención.

3

Un manejo explícito de concurrencia mejora experiencia de usuario y reduce race conditions difíciles de depurar.

🧪 Aprende probando

Ejemplo Ejemplo guiado Lee, ejecuta y modifica para ver cómo cambia el comportamiento al ajustar tipos.
Ejemplo Demo interactiva Prueba una mini interfaz para visualizar decisiones de tipado.

🏁 Retos

Reto Reto práctico Completa el ejercicio aplicando lo visto en esta sesión.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre TypeScript.

Test de TypeScript

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com