Blog

TypeScript avanzado: tipos genéricos, mapped types y utility types prácticos

Cómo usar el sistema de tipos de TypeScript para reducir código boilerplate y ganar expresividad.

#typescript#tipos#patrones#frontend#backend

TypeScript avanzado no es solo para mostrar. Los tipos genéricos, los mapped types y los utility types bien usados reducen código, previenen errores y mejoran la experiencia de quien usa tu código.

Genéricos: escribe una vez, usa muchas veces

Un genérico es una forma de parametrizar tipos. En lugar de escribir ListaDeUsers, ListaDeProductos, ListaDePedidos, escribes Lista<T> una vez.

El beneficio es que el mismo código funciona con cualquier tipo manteniendo la seguridad de tipos.

  • Define T como placeholder para "cualquier tipo".
  • Úsalo en funciones, clases e interfaces.
  • TypeScript infiere el tipo en contexto.

Mapped types: transforma automáticamente estructuras

Un mapped type toma una estructura existente y produce una nueva derivada. Por ejemplo, convertir un objeto con campos a una versión con todos opcionales, o derivar un tipo del esquema de una base de datos.

El resultado es que cambios centrales se propagan automáticamente sin duplicación.

  1. Identifica el patrón que repites en múltiples tipos.
  2. Crea un mapped type que lo generalice.
  3. Reutiliza en lugar de duplicar.

Utility types que ahorran escritura

TypeScript incluye utilidades como Partial, Pick, Record y Omit que resuelven problemas comunes. Aprender a usarlas elimina boilerplate.

Keyof, typeof y las restricciones de genéricos te permiten manipular tipos dinámicamente.

  • Partial<T>: todos los campos opcionales.
  • Pick<T, K>: solo ciertos campos.
  • Record<K, T>: diccionario tipado.

Errores que evitar cuando trabajas con tipos avanzados

El mayor riesgo es pensar que cualquier cosa se puede tipificar o sobrecomplicar el sistema. En realidad, los tipos más útiles son los más simples. Si no puedes explicar un tipo en una frase, probablemente es demasiado complejo.

Los tipos avanzados que realmente ayudan son aquellos que eliminan código, no los que lo hacen más sofisticado.

Cuándo usar estos patrones

Úsalos cuando el mismo patrón aparece múltiples veces. Si solo lo necesitas una vez, probablemente no merece abstraerlo. El criterio es DRY, pero aplicado inteligentemente.

Un tipo bien hecho se mantiene a sí mismo a medida que crece el código.

04 / Contacto

¿Hablamos de tu próximo sistema?

Cuéntame el problema que quieres resolver. Respondo en un día laborable y planteo una ruta de acción en el primer mensaje.

Iniciar conversación →