El Camino hacia TypeScript Nativo

This ad is not shown to multipass and full ticket holders
React Summit
React Summit 2025
June 13 - 17, 2025
Amsterdam & Online
The biggest React conference worldwide
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit 2025
React Summit 2025
June 13 - 17, 2025. Amsterdam & Online
Learn more
Bookmark
Rate this content

Imagina la conveniencia de ejecutar archivos TypeScript directamente con Node.js. Hace apenas unos años, este concepto parecía un sueño lejano. Hoy, se presenta como una emocionante característica experimental. Esta narrativa se adentra en el viaje de transformar este sueño en una realidad.

This talk has been presented at Node Congress 2025, check out the latest edition of this JavaScript Conference.

Marco Ippolito
Marco Ippolito
24 min
17 Apr, 2025

Comments

Sign in or register to post your comment.
  • Va Da
    Va Da
    P4
    TypeScript is the future, adoption looks great.
Video Summary and Transcription
La charla de hoy discute la integración de TypeScript en Node.js. Se explora el camino hacia TypeScript nativo en Node.js, incluyendo la historia de las solicitudes de los usuarios para soporte nativo. Implementar TypeScript en Node.js presenta desafíos debido a las diferencias en las garantías de estabilidad y la compatibilidad de herramientas. TypeStripping es una implementación centrada en la transpilación que elimina características no JavaScript, haciéndola estable a través de las versiones de TypeScript. El paquete Amaro, construido sobre SWC, proporciona compatibilidad y velocidad para la eliminación de tipos. Las banderas experimentales Strip Types y Transform Types permiten características de TypeScript borrables. TypeScript tiene limitaciones como el soporte de namespace y enum en JavaScript y problemas de migración de código. TypeScript Import Types y Syntax Detection son desarrollos en curso. La ambigüedad en la sintaxis entre JavaScript y TypeScript se aborda con una bandera de sintaxis borrable. Los pasos futuros incluyen la corrección de errores, mejoras de rendimiento y próximas versiones de Node.js.
Available in English: The Path to Native TypeScript

1. Introducción a TypeScript Nativo en Node.js

Short description:

Hoy hablaré sobre el camino hacia TypeScript nativo, cómo Node.js y TypeScript han trabajado juntos para traer esta nueva integración en Node.js. TypeScript ha pasado de ser una tecnología de nicho a uno de los lenguajes más populares en la escena del desarrollo web. También exploraremos por qué Node.js solo ahora ha integrado TypeScript y la historia de las solicitudes de los usuarios para el soporte nativo.

Bienvenidos, a todos. Estoy muy feliz de dar esta masterclass aquí en Node Congress. Hoy hablaré sobre el camino hacia TypeScript nativo, cómo Node.js y TypeScript han trabajado juntos para traer esta nueva integración en Node.js.

Permítanme presentarme. Mi nombre es Marco Ippolito. Soy ingeniero de seguridad senior en Herodas y miembro del Comité de Dirección Técnica de Node.js.

Así que comenzaremos con un poco de historia, cómo y por qué decidimos apoyar TypeScript y qué ha cambiado en los últimos años. Así que comenzaremos con este gráfico. Este es el estado de JS 2016, hace casi 10 años. Y podemos ver que TypeScript estaba justo al principio, no era muy popular. De hecho, el 34% de los encuestados, habían oído de TypeScript, pero no estaban interesados en ello. Y solo una pequeña fracción estaba realmente interesada y lo había usado y lo usaría de nuevo. También podemos ver algunos otros nombres que han desaparecido de la escena del desarrollo web, como CoffeeScript, Elm y ClosureScript, pero eran bastante populares en ese momento. Y ahora podemos ver el estado más reciente de JS, que es el 2023. En este gráfico, podemos ver que casi todos los desarrolladores que respondieron, que son 17,000, usan TypeScript solo el 32%. Y solo el 9% de los encuestados usan JavaScript. Así que la mayoría de los usuarios usan TypeScript en diferentes porcentajes, pero todos lo hacen. Y es una locura pensar que hace 10 años, esto era muy de nicho. Y hoy, como todos usan TypeScript. Es una de las tecnologías más populares. Esta es la encuesta de Stack Overflow 2023. Y podemos ver que TypeScript es el quinto lenguaje de programación más popular. Así que hoy veremos por qué Node.js no lo ha integrado hace años y esto solo ha sucedido ahora. Otro dato muy importante son las descargas de NPM. TypeScript tiene alrededor de 12 millones de descargas por día. Es uno de los paquetes más descargados en NPM. Así que hoy veremos cómo TypeScript es compatible en Node.js.

Pero hablemos un poco sobre la historia. Como mantenedor de Node.js, siempre he visto problemas, discusiones, PRs de usuarios que quieren soporte nativo para TypeScript. Como pueden ver, hay múltiples problemas y ha habido tantas propuestas sobre cómo implementar TypeScript en Node.js, pero nunca sucedió hasta recientemente.

2. Desafíos en la Implementación de TypeScript en Node.js

Short description:

Hay razones por las cuales la implementación de TypeScript en Node.js no es sencilla. Obtener consenso entre los voluntarios y la gobernanza abierta de Node.js es un desafío. Existen diferentes garantías de estabilidad entre Node.js y TypeScript, y Node.js no soporta TSConfig. Elegir una herramienta que funcione de inmediato es difícil debido al gran tamaño del paquete de TypeScript y los problemas pasados con la interoperabilidad de CommonJS y ESM. Los mapas de origen también son necesarios para una depuración efectiva, pero añaden sobrecarga.

Y hay razones por las cuales la implementación no es sencilla. Uno de los primeros desafíos es que es muy difícil obtener consenso, siendo Node.js un proyecto dirigido por voluntarios y gobernanza abierta. Es muy difícil hacer que todos estén de acuerdo sobre lo que significa soportar TypeScript y cómo debería hacerse. Ha habido intentos en el pasado en 2023, hubo una discusión en la Cumbre de Colaboradores en Bilbao, pero la discusión, eventualmente se desvaneció. Así que no sucedió.

Existen diferentes garantías de estabilidad entre Node.js y TypeScript. TypeScript no sigue SEMVer. Así que significa que cada actualización menor tiene cambios disruptivos mientras que Node.js tiene fuertes garantías de seguridad. Así que hay una nueva, como una versión LTS de Node que dura tres años. Así que no es posible fijar una versión específica de TypeScript durante tres años. Y esta gran diferencia entre los dos, entre Node y TypeScript hace que sea difícil integrarlo. Node.js no soporta un archivo de configuración y por lo tanto no soporta TSConfig. Tener Node soportando TSConfig sería raro. Y es algo que no obtendría consenso porque en primer lugar, Node no tiene su propio archivo de configuración. Así que, ¿por qué debería soportar el archivo de configuración de otro proyecto o dependencia de Node.js, que es la razón por la cual Node no soporta TSConfig?

Es muy difícil elegir una herramienta que funcione de inmediato. Como dijimos, no podemos usar TypeScript como un paquete de NPM. Necesitamos usar algo más. La razón por la cual no podemos usar TypeScript es porque es un paquete de NPM muy grande. Es un paquete de 24 megabytes. Está escrito en JavaScript y sería muy difícil integrarlo y sin mencionar las garantías de estabilidad de las que hablamos antes. Así que no hay una sola herramienta que se ajuste al caso de uso de Node y por lo tanto es muy difícil elegir. En el pasado, hubo muchos problemas entre la interoperabilidad de CommonJS y ESM. Así que hasta que esos se solucionaran, habría sido una característica a medio hacer integrar TypeScript. Pero ahora esos finalmente están solucionados. Y así tuvimos la oportunidad de soportar TypeScript. Los mapas de origen. Así que cada vez que transpiles tu código, cambias la posición de tu código dentro del archivo al transformar TypeScript en JavaScript. Así que necesitarías mapas de origen para poder depurar efectivamente y reconstruir la ubicación de todo en tu código fuente. Pero los mapas de origen añaden mucha sobrecarga.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Los tipos más útiles de React
React Day Berlin 2023React Day Berlin 2023
21 min
Los tipos más útiles de React
Top Content
Today's Talk focuses on React's best types and JSX. It covers the types of JSX and React components, including React.fc and React.reactnode. The discussion also explores JSX intrinsic elements and react.component props, highlighting their differences and use cases. The Talk concludes with insights on using React.componentType and passing components, as well as utilizing the react.element ref type for external libraries like React-Select.
TypeScript y React: Secretos de un matrimonio feliz
React Advanced 2022React Advanced 2022
21 min
TypeScript y React: Secretos de un matrimonio feliz
Top Content
React and TypeScript have a strong relationship, with TypeScript offering benefits like better type checking and contract enforcement. Failing early and failing hard is important in software development to catch errors and debug effectively. TypeScript provides early detection of errors and ensures data accuracy in components and hooks. It offers superior type safety but can become complex as the codebase grows. Using union types in props can resolve errors and address dependencies. Dynamic communication and type contracts can be achieved through generics. Understanding React's built-in types and hooks like useState and useRef is crucial for leveraging their functionality.
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
TypeScript Congress 2023TypeScript Congress 2023
31 min
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
Top Content
Daniel Rowe discusses building a TypeScript-first framework at TypeScript Congress and shares his involvement in various projects. Nuxt is a progressive framework built on Vue.js, aiming to reduce friction and distraction for developers. It leverages TypeScript for inference and aims to be the source of truth for projects. Nuxt provides type safety and extensibility through integration with TypeScript. Migrating to TypeScript offers long-term maintenance benefits and can uncover hidden bugs. Nuxt focuses on improving existing tools and finds inspiration in frameworks like TRPC.
Cargadores ESM: Mejorando la carga de módulos en Node.js
JSNation 2023JSNation 2023
22 min
Cargadores ESM: Mejorando la carga de módulos en Node.js
Top Content
ESM Loaders enhance module loading in Node.js by resolving URLs and reading files from the disk. Module loaders can override modules and change how they are found. Enhancing the loading phase involves loading directly from HTTP and loading TypeScript code without building it. The loader in the module URL handles URL resolution and uses fetch to fetch the source code. Loaders can be chained together to load from different sources, transform source code, and resolve URLs differently. The future of module loading enhancements is promising and simple to use.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.

Workshops on related topic

React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured Workshop
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Dominando conceptos avanzados en TypeScript
React Summit US 2023React Summit US 2023
132 min
Dominando conceptos avanzados en TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos.
Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
Consejos y Trucos Profundos de TypeScript
Node Congress 2024Node Congress 2024
83 min
Consejos y Trucos Profundos de TypeScript
Top Content
Featured Workshop
Josh Goldberg
Josh Goldberg
TypeScript tiene un sistema de tipos poderoso con todo tipo de características sofisticadas para representar estados de JavaScript salvajes y extravagantes. Pero la sintaxis para hacerlo no siempre es sencilla, y los mensajes de error no siempre son precisos al decirte qué está mal. Vamos a profundizar en cómo funcionan muchas de las características más poderosas de TypeScript, qué tipos de problemas del mundo real resuelven, y cómo dominar el sistema de tipos para que puedas escribir código TypeScript verdaderamente excelente.
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
React Advanced 2022React Advanced 2022
148 min
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
¿Eres un desarrollador de React tratando de obtener los máximos beneficios de TypeScript? Entonces esta es la masterclass para ti.En esta masterclass interactiva, comenzaremos desde lo básico y examinaremos los pros y contras de las diferentes formas en que puedes declarar componentes de React usando TypeScript. Después de eso, pasaremos a conceptos más avanzados donde iremos más allá de la configuración estricta de TypeScript. Aprenderás cuándo usar tipos como any, unknown y never. Exploraremos el uso de predicados de tipo, guardias y comprobación exhaustiva. Aprenderás sobre los tipos mapeados incorporados, así como cómo crear tus propias utilidades de mapa de tipo nuevo. Y comenzaremos a programar en el sistema de tipos de TypeScript usando tipos condicionales e inferencia de tipos.
Masterclass de Node.js
Node Congress 2023Node Congress 2023
109 min
Masterclass de Node.js
Top Content
Workshop
Matteo Collina
Matteo Collina
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.

Nivel: intermedio
Construir y Desplegar un Backend Con Fastify & Platformatic
JSNation 2023JSNation 2023
104 min
Construir y Desplegar un Backend Con Fastify & Platformatic
Top Content
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente GraphQL y REST APIs con un esfuerzo mínimo. La mejor parte es que también te permite desatar todo el potencial de Node.js y Fastify siempre que lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y plugins adicionales. En la masterclass, cubriremos tanto nuestros módulos de Open Source como nuestra oferta en la Nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/). 
En esta masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la Platformatic Cloud.