La capacidad de un desarrollador para adoptar y dominar nuevas herramientas, incluso cuando inicialmente son recibidas con escepticismo, es un sello distintivo de su experiencia.
TypeScript, un superconjunto de JavaScript, ha experimentado un notable ascenso en los últimos años, ganando una amplia adopción y convirtiéndose en una parte fundamental del desarrollo web moderno.
Sin embargo, acontecimientos recientes han levantado ampollas en la comunidad de desarrolladores, ya que algunos destacados proyectos de código abierto, como Svelte, Drizzle y Turbo, han tomado la sorprendente decisión de abandonar TypeScript en favor de JavaScript Vanilla.
Este cambio ha encendido un animado debate entre los desarrolladores, lo que ha provocado un examen más detallado de las motivaciones detrás de esta salida y las posibles implicaciones para el ecosistema JavaScript.
Recuerda que si quieres aprender más acerca de typescript, puedes ir a esté video
Orígenes de TypeScript
Para entender realmente por qué algunos desarrolladores están diciendo adiós a TypeScript, es esencial trazar su recorrido desde sus humildes comienzos hasta su posición actual en el ámbito del desarrollo web.
En 2012, Microsoft introdujo TypeScript como un lenguaje de código abierto. Inicialmente, TypeScript no captó la atención inmediata de la comunidad de desarrollo.
Fue visto como un experimento interesante en lugar de un salto revolucionario hacia adelante.
El panorama de JavaScript ya estaba floreciendo con lenguajes dinámicos y poco tipados, y muchos desarrolladores estaban contentos con el status quo.
Sin embargo, el punto de inflexión de TypeScript llegó cuando Angular 2, un popular marco de aplicaciones web desarrollado por Google, tomó la audaz decisión de adoptar TypeScript como su lenguaje principal.
Esta decisión fue recibida con escepticismo y resistencia, ya que los desarrolladores se enfrentaban a la idea de añadir tipado estático a JavaScript. Sin embargo, resultó ser un momento crucial en la historia de TypeScript.
La adopción de TypeScript por Angular actuó como catalizador para el crecimiento de TypeScript. Los desarrolladores que inicialmente dudaban en adoptarlo empezaron a ver los beneficios de la tipificación estática, las herramientas mejoradas y la mejor calidad del código.
TypeScript comenzó a ganar tracción, y rápidamente comenzó a impregnar el paisaje de desarrollo.
El triunfo de TypeScript y el giro inesperado
Durante varios años, TypeScript disfrutó de un éxito sin precedentes. Su tasa de adopción siguió aumentando y se convirtió en una herramienta crucial para los desarrolladores que trabajan en aplicaciones web a gran escala.
Sus ventajas eran innegables:
- Type Safety: TypeScript introdujo el tipado estático, que ayudaba a detectar los errores relacionados con los tipos en tiempo de compilación en lugar de en tiempo de ejecución. Esta característica mejoró significativamente la calidad del código y redujo la probabilidad de problemas difíciles de depurar.
- Soporte de herramientas: TypeScript ofrecía un soporte de herramientas excepcional, con funciones como el autocompletado, la refactorización y la navegación inteligente por el código. Esto hizo a los desarrolladores más productivos y redujo el tiempo dedicado a la depuración.
- Escalabilidad: En grandes proyectos, el sistema de tipos de TypeScript demostró ser inestimable para el mantenimiento de bases de código, facilitando la comprensión, refactorización y ampliación del código existente
- Comunidad y ecosistema: TypeScript se ganó una comunidad vibrante y activa, que contribuyó al crecimiento de librerías, frameworks y herramientas compatibles con TypeScript.
Sin embargo, justo cuando TypeScript parecía haber consolidado su posición como herramienta indispensable, la comunidad de desarrollo fue testigo de un giro inesperado de los acontecimientos.
Destacados proyectos de código abierto, como Svelte, Drizzle y Turbo, decidieron abandonar TypeScript en sus bases de código.
Para aclarar, esta decisión no implicaba que se prohibiera a los usuarios finales utilizar TypeScript con estas bibliotecas. Por el contrario, significaba que las propias bibliotecas ya no se desarrollarían utilizando TypeScript.
Si quieres un poco más de contenido puedes ir al siguiente video
Los motivos del éxodo
La pregunta candente que surgió a raíz de estos acontecimientos fue la siguiente:
¿Cómo podían los desarrolladores plantearse volver a Vanilla JavaScript después de experimentar las ventajas de TypeScript?
El caso de la "gimnasia tipográfica"
David Heinemeier Hansson, creador del popular framework Ruby on Rails, ofreció una visión de por qué algunos proyectos se despedían de TypeScript.
En el caso de la versión 8 de Turbo, la razón principal no fue el paso de compilación, sino la "gimnasia tipográfica" que TypeScript introducía.
Hansson explicó que mientras trabajaba en su propia biblioteca, "Svelte Fire", se encontró con situaciones en las que tuvo que realizar esta "gimnasia de tipos" con TypeScript para satisfacer al compilador.
El término "gimnasia tipográfica" se refiere a las maniobras a veces acrobáticas y enrevesadas que los desarrolladores tienen que ejecutar para cumplir las restricciones tipográficas de TypeScript.
Aunque es posible utilizar el tipo "any" para suprimir los errores de tipo, este enfoque no se ajusta a las normas de código mantenible y de alta calidad. Podría potencialmente conducir a problemas de mantenimiento y reducir los beneficios que TypeScript aporta.
Esta perspectiva arroja luz sobre uno de los puntos de dolor que algunos desarrolladores experimentaron al trabajar con TypeScript.
Aunque el sistema de tipos ofrecía ventajas sustanciales, también introducía complejidad y a veces obligaba a los desarrolladores a navegar por intrincadas jerarquías de tipos para lograr sus objetivos.
Svelte
En cuanto a Svelte, sus razones para abandonar TypeScript son más pragmáticas.
Rich Harris, el creador de Svelte, hizo hincapié en la practicidad de su decisión. Svelte 5, a punto de salir al mercado, ya no dependerá de TypeScript.
Además, Svelte Kit, un marco para la creación de aplicaciones web, ya había adoptado JavaScript Vanilla sin formato.
La fuerza impulsora de esta transición fue la eliminación del paso de compilación. En un marco de trabajo tan grande como Svelte Kit, esto representaba un aumento sustancial de la productividad.
Eliminar TypeScript significaba reducir la necesidad de comprobación de tipos durante la compilación, lo que se traducía en tiempos de compilación más rápidos y una respuesta más rápida para los desarrolladores. Fue una decisión pragmática impulsada por el deseo de optimizar el proceso de desarrollo.
Sin embargo, lo que hace que el caso de Svelte sea especialmente intrigante es que consiguieron conservar la mayoría de las ventajas de TypeScript utilizando JSDoc.
JSDoc
Es un formato de comentario estandarizado que permite la declaración de tipos y documentación utilizando comentarios JavaScript normales. Estos comentarios pueden utilizarse para generar archivos .d.ts y proporcionar IntelliSense en editores de código, ofreciendo las mismas ventajas que TypeScript.
Este enfoque permitió a Svelte alcanzar un equilibrio entre rendimiento y seguridad de tipos.
Aunque abandonaron TypeScript para mejorar los tiempos de compilación, conservaron la capacidad de proporcionar información de tipos y documentación a los desarrolladores mediante anotaciones JSDoc.
El futuro de TypeScript y el debate en curso
Entonces, ¿el reciente alejamiento de TypeScript en algunos proyectos de alto perfil señala el final de su reinado en el ecosistema JavaScript? La respuesta tiene matices.
Cuando se trata de crear aplicaciones con herramientas como Svelte Kit o Next.js, TypeScript sigue siendo una parte integral del proceso de desarrollo.
La integración de TypeScript con estas herramientas es perfecta y está optimizada para ofrecer resultados óptimos. Intentar replicar estos resultados con JSDoc y JavaScript plano podría ser una tarea desalentadora.
Sin embargo, puede haber un rayo de esperanza de reconciliación en el horizonte. Actualmente se está estudiando una propuesta ECMAScript de fase 1, conocida como "Optional Static Typing" (tipado estático opcional).
Si se aprueba, introduciría anotaciones de tipo opcionales en JavaScript de forma nativa, lo que podría dejar TypeScript casi obsoleto en algunos contextos.
Esta propuesta ha suscitado un animado debate en la comunidad de desarrolladores. Algunos sostienen que incorporar anotaciones de tipo opcionales al propio JavaScript podría conducir a un ecosistema más racionalizado y unificado.
Podría simplificar el proceso de desarrollo, reducir la necesidad de transpilación y eliminar potencialmente parte de la complejidad introducida por TypeScript.
Por otro lado, los defensores de TypeScript sostienen que TypeScript ofrece características adicionales y un sistema de tipos maduro que supera lo que la propuesta ECMAScript pretende conseguir.
Argumentan que el rico ecosistema de herramientas y bibliotecas de TypeScript, junto con el amplio apoyo de la comunidad, proporciona un nivel de solidez que sería difícil de replicar únicamente con las características nativas de JavaScript.
Conclusión final
El reciente alejamiento de TypeScript en algunos proyectos de alto perfil señala una evolución matizada en el mundo del desarrollo web. Sirve como recordatorio de que incluso en el panorama tecnológico en constante evolución, la adaptación y el pragmatismo a menudo dictan las decisiones que toman los desarrolladores.
El viaje de TypeScript, desde sus modestos comienzos hasta su adopción generalizada, ha estado marcado tanto por el entusiasmo como por la aprensión. Aunque es innegable que ofrece ventajas en términos de seguridad tipográfica y soporte de herramientas, no está exento de dificultades, como han puesto de manifiesto los desarrolladores que han optado por abandonarlo.
Sin embargo, el futuro de TypeScript sigue siendo brillante en muchos contextos, especialmente donde las ventajas del tipado estático y las herramientas robustas son primordiales. Sigue siendo una herramienta valiosa para la creación de aplicaciones web complejas que requieren garantías de tipado sólidas y facilidad de mantenimiento.
A medida que evoluciona el ecosistema JavaScript, los desarrolladores deben estar atentos a estos cambios y estar preparados para adaptarse al panorama cambiante. El debate actual en torno a las anotaciones de tipo opcionales en JavaScript indica que la comunidad de JavaScript se encuentra en un estado de cambio y que se vislumbran nuevos desarrollos en el horizonte.
Al final, la decisión de utilizar TypeScript o JavaScript plano depende en última instancia de los requisitos específicos de un proyecto y de las preferencias del equipo de desarrollo.
Ser un buen desarrollador significa abrazar el cambio cuando se alinea con los objetivos y principios del proyecto, y también significa permanecer abierto a nuevas posibilidades, incluso si eso significa decir adiós a una herramienta que nos ha servido bien.
En el dinámico mundo del desarrollo web, la adaptabilidad sigue siendo la clave del éxito.