Elixir 1.20 estrena tipado gradual sin necesidad de anotaciones

Elixir 1.20.0 se publicó el 3 de junio de 2026, con una revisión de mantenimiento (1.20.2) el 23 de junio. La novedad de fondo no es una función puntual, es un cambio de categoría: el lenguaje pasa a tener un sistema de tipos que verifica el código línea a línea sin que el programador tenga que escribir una sola anotación de tipo.

Tipado por inferencia, no por anotación

A diferencia de TypeScript sobre JavaScript o de los tipos graduales de Python, Elixir no te pide que declares el tipo de cada variable o función. El compilador infiere los tipos a partir de los guards (las cláusulas when que ya usabas para especializar funciones) y del cuerpo de la propia función. Si tu código ya usaba pattern matching y guards de forma idiomática, gran parte del beneficio del nuevo sistema de tipos llega gratis, sin tocar una línea.

Tipado de mapas por dominio de claves

Una de las piezas más interesantes es el soporte para tipar mapas según el dominio de sus claves, no solo según valores fijos. La propia documentación pone como ejemplo un tipo como %{integer() => binary(), float() => :ok}, donde el compilador entiende que las claves enteras mapean a binarios y las claves de coma flotante a un átomo concreto. Es un nivel de expresividad que va más allá de lo que ofrecen los sistemas de tipos graduales de la mayoría de lenguajes dinámicos.

Quién está detrás del desarrollo

El trabajo de tipado gradual en Elixir lleva varios años en marcha, con financiación de empresas como Fresha y Tidewave, y apoyo del CNRS (el centro nacional de investigación científica francés), de donde salió buena parte de la investigación académica en la que se basa el sistema de tipos. Es un recordatorio de que las mejoras de este calibre en un lenguaje de producción no surgen de la nada: llevan años de trabajo en teoría de tipos por detrás.

Qué esperar si mantienes código Elixir

El compilador empieza a señalarte errores de tipo que antes solo aparecían en tiempo de ejecución, sin que tengas que migrar nada de tu base de código existente. Es la misma filosofía que Python ha ido adoptando con mypy y los tipos graduales, pero integrada de raíz en el compilador en vez de como herramienta externa opcional. El registro completo de cambios está en las notas de la versión en GitHub.

Imagen: Pexels / Markus Spiske

COMPARTE ESTA NOTICIA

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP