El Camino hacia TypeScript Nativo

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & 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.

3. TypeStripping: Implementando TypeScript en Node.js

Short description:

Habilitar TypeScript globalmente causaría cambios disruptivos. La implementación, llamada TypeStripping, se centra en la transpilación en lugar de la verificación de tipos. TypeStripping elimina características que no son de JavaScript y elimina la necesidad de TSConfig. Los tipos en línea se eliminan, no se requieren mapas de origen y TypeStripping se mantiene estable a través de las versiones de TypeScript.

Y si los habilitas, los habilitas globalmente, lo que significa que también estarían habilitados para tu JavaScript. Este es un gran problema porque sería un cambio disruptivo. Y finalmente, no hay campeón. Significa que nadie quería hacer este trabajo de tener, como implementar la característica y hacer que todos estuvieran de acuerdo. Bueno, yo sí defendí esta iniciativa, así que comencé a trabajar en esto en julio de 2024 y la forma en que elegí implementar TypeScript se llama TypeStripping.

Así que la forma en que implementé TypeScript es no hacer verificación de tipos, solo transpilación. La razón es que la verificación de tipos es la parte más inestable de TypeScript y no hay especificación. Así que la única forma de realizar la verificación de tipos es a través del paquete NPM de TypeScript. Así que esperamos que los usuarios descarguen este paquete de forma independiente para que puedan actualizar sus versiones de forma independiente. Ellos pueden configurar su TSConfig sin que el tiempo de ejecución proporcione valores predeterminados. Y el problema también es que la verificación de tipos no es algo que quieras. No es algo que hagas durante tu ciclo de desarrollo. Solo lo haces durante CI o cada vez que terminas de desarrollar tu característica. Así que ya tienes tu IDE que te muestra cada vez que hay errores en los tipos. Así que esto no era algo que quisiéramos proporcionar como un tiempo de ejecución.

Además, dado que no queremos soportar un TSConfig, esta técnica de TypeStripping no involucra TSConfig. TypeStripping, lo que hace es básicamente eliminar todo de TypeScript que no sea JavaScript. Y si el resultado es JavaScript válido, lo ejecutará. No necesita un TSConfig porque todas las características de TypeScript son eliminadas. Y esto es exactamente lo que hace. Elimina tipos en línea. No todo es un tipo en línea, así que veremos eso un poco más tarde, cómo funciona y cuáles son los problemas que surgen de TypeStripping. Pero imagina que defines una variable que es una cadena. Esa pequeña parte de cadena se puede eliminar de forma segura porque no afecta al tiempo de ejecución. No requiere mapas de origen. Usamos un pequeño truco mágico para evitar cambiar la ubicación dentro del archivo durante la transpilación. Así que esta solución no requiere mapas de origen, lo que significa que la posición en el archivo es uno a uno con donde escribes, se ejecutará. Y TypeStripping es estable a través de las versiones de TypeScript porque la verificación de tipos es altamente inestable, pero la transpilación es bastante estable. No cambia mucho. TypeScript no ha añadido nuevas palabras clave en un tiempo, así que es bastante seguro.

4. TypeStripping: Cómo Funciona y el Paquete Amaro

Short description:

TypeStripping elimina código que no es de JavaScript, preservando la ubicación original al reemplazar la sintaxis eliminada con espacios en blanco. SWC, un paquete NPM probado en batalla, proporciona la compatibilidad y velocidad necesarias para el stripping de tipos. Las versiones personalizadas de SWC fueron enviadas rápidamente por los increíbles mantenedores. SWC está envuelto en el paquete Amaro, permitiendo actualizaciones independientes y compatibilidad con diferentes versiones de TypeScript. Se abrió un PR para soportar tipos de stripping experimentales en julio del año pasado.

Hablamos con el equipo de TypeScript y nos aseguraron de esta estabilidad. Así que ¿cómo funciona TypeStripping? Podemos imaginar que este es un código de TypeScript, podemos simplemente tomar una goma y borrar todo. Así que las interfaces no son parte de JavaScript. Podemos borrarlas. Este es un tipo en línea. Podemos borrarlo porque no es parte de JavaScript. Así que el resultado final se ve así. Este es JavaScript válido. Así que esto es algo que node puede ejecutar.

El problema es que esto requiere mapas de origen porque hemos cambiado la posición dentro del archivo. Pero si reemplazamos la sintaxis que hemos eliminado con espacios en blanco, ¿es posible preservar la ubicación original? Así que cada vez que eliminamos tipos en línea, los reemplazamos con espacio en blanco y por lo tanto no necesitamos mapas de origen. Así que para lograr esto, usamos una variante de SWC. SWC estaba en TypeScript. Es un paquete NPM que libera un WASM web assembly. Así que Node.js construye para muchas plataformas diferentes y tener WASMs nos permite soportar todas las diferentes plataformas que de otro modo un proyecto de Rust no soportaría porque Rust se construye en diferentes plataformas que Node.js.

Así que necesitábamos algo compatible con todo. Es probado en batalla porque es utilizado por muchos proyectos populares en el ecosistema, RSpark, Deno y tantos proyectos usan SWC. Soporta el stripping de tipos. Así que nos permite hacer lo que hablamos antes. Es muy rápido y los mantenedores son increíbles. Ellos nos ayudaron mucho. Ellos pudieron enviar estas versiones personalizadas de SWC en días desde que comenzamos a trabajar en TypeScript y esto nos ayudó mucho. Así que un gran saludo a los mantenedores de SWC. Decidimos envolver SWC en un paquete llamado Amaro. Así que esto permite a los usuarios actualizar sus versiones de TypeScript y Spiler de forma independiente. Así que puedes usar Amaro como un cargador externo y esto te permite no estar atascado en una versión de TypeScript. Pero si TypeScript lanza nuevas características, Amaro será actualizado. Puedes usar Amaro independientemente de la versión utilizada dentro de Node. Así que esta es la razón por la que envolvimos en un paquete. Así que en julio del año pasado, abrí este PR para soportar tipos de stripping experimentales.

5. Tipos de Stripping Experimentales y Tipos de Transformación

Short description:

Node 22.6 introdujo la bandera Experimental Strip Types, que soporta características de TypeScript que pueden ser borradas. Sin embargo, los namespaces y enums que afectan el tiempo de ejecución no pueden ser borrados. Para consumir toda la sintaxis de TypeScript, se puede usar la bandera Experimental Transform Types con los mapas de origen habilitados.

Este PR se completó en 20 días, lo cual es muy rápido considerando el tiempo de Node.js, lo que fue genial. Así que en Node 22.6, lanzamos esta nueva bandera experimental llamada Experimental Strip Types. Tiene algunas limitaciones. Así que solo podemos soportar características que pueden ser borradas. No todas las características de TypeScript pueden ser borradas. Algunas de ellas, por ejemplo, los namespaces y enums requieren ser transformados en JavaScript porque sí afectan el tiempo de ejecución. Por ejemplo, este es un namespace y exporta una función, los enums exportan algunos valores. Estos no son solo tipos. Estos son valores y no pueden ser borrados. Así que si tu namespace exporta solo tipos desde Node 23.8, pueden ser soportados. Pero si exportan valores que afectan los tiempos de ejecución, no pueden ser soportados. Ellos lanzarán un error durante la traducción. Pero para superar este obstáculo, creamos una nueva bandera llamada Experimental Transform Types. Esto te permite consumir toda la sintaxis de TypeScript. Así que esto requiere que los mapas de origen estén habilitados, pero puedes usar enums, puedes usar namespaces, puedes usar toda la sintaxis de TypeScript que desees a costa de tener los mapas de origen habilitados.

6. Limitaciones de TypeScript y Migración de Código

Short description:

Namespace y enum en JavaScript y generación de código desde TypeScript. Rutas personalizadas no soportadas. Limitaciones: características que requieren transformación no son degradadas, extensión de archivo explícita requerida para importaciones. TypeScript 5.7 introdujo reescritura de rutas para rutas relativas. El código existente puede ser migrado usando correct-yes-specifiers.

Por ejemplo, esto es lo que namespace y enum lucen en JavaScript. Así que hay una generación de código desde TypeScript a JavaScript. Y por defecto, queremos evitar este tipo de generaciones de código. Además, las rutas personalizadas no son soportadas. Porque requiere configuración de TS, pero puedes usar importaciones de subruta de Node.js que son soportadas y hacen exactamente lo mismo. Así que puedes usarlas para aliasar una ruta específica dentro de tu proyecto.

Así que la primera limitación, como dije, son las características que requieren transformación. No realizamos degradación, lo que significa que si es una sintaxis que va a ser soportada por el motor de JavaScript, por ejemplo, decoradores o gestión de recursos explícita, el compilador de TypeScript no realizará la transpilación de esos porque eventualmente serán soportados en una nueva versión de Node.js. Así que el keyword using, no será transpilado, no será degradado a JavaScript que sea compatible. Así que se quedará ahí. Y si el motor de JavaScript lo soporta, será posible ejecutarlo. De lo contrario, lanzará un error de sintaxis. Lo mismo para los decoradores. Ellos llegarán pronto al lenguaje. Así que no había razón para polyfill el comportamiento de los decoradores.

Otra limitación es que debes ser explícito cuando importas un archivo. Si es un archivo de TypeScript, necesitas usar la extensión .ts. De lo contrario, necesitas usar la .js extensión. En el pasado en TypeScript, siempre teníamos que usar la extensión .javascript al importar un archivo porque ese archivo sería transpilado a JavaScript. Pero en tiempo de ejecución, ese archivo es un archivo de TypeScript. Así que necesitamos ser explícitos. En el pasado, ya podías usar la extensión .ts en TypeScript, pero no podías transpilarlo. Solo podías usarlo en combinación con la bandera noemit. Este comportamiento ha cambiado desde TypeScript 5.7. Una nueva característica llamada reescritura de rutas para rutas relativas fue desarrollada por el equipo de TypeScript específicamente para soportar los tipos de stripping experimentales de Node.js. Así que con esta nueva bandera, durante la transpilación, reescribirá las extensiones para que coincidan con el destino. Así que cada vez que transpiles un archivo .ts, se convertirá en un archivo .js, y eso coincidirá. Pero ¿qué pasa con el código fuente existente? Así que es posible con un modo de código migrar la base de código existente para soportar este comportamiento que Node.js impone. Puedes usar este modo de código llamado correct-yes-specifiers por Jacob, uno de los colaboradores de Node.js. Transformará toda la sintaxis, todas las importaciones que no son soportadas en importaciones que son soportadas.

7. TypeScript Import Types and Syntax Detection

Short description:

Trabajo en progreso. Se requiere la palabra clave type para las importaciones de tipo. No es posible ejecutar archivos TypeScript en módulos de Node para evitar problemas de compatibilidad. Tipos de strip experimentales habilitados por defecto en Node 23.6. Detección de sintaxis de TypeScript en Eval para manejar diferentes módulos.

Este es un trabajo en progreso, así que puedes leer más sobre esto en NPM.

Otra limitación importante es que se requiere la palabra clave type para las importaciones de tipo. Así que cada vez que importes un tipo, necesitas especificar que eso es un tipo. Por ejemplo, en el primer caso, importamos type 1 y 2. Usamos la palabra clave type. Si no la usamos, Node.js pensará que eso es un valor y no un tipo, así que no lo borrará. Mientras que si es un tipo, se puede borrar de forma segura, y causará un error en tiempo de ejecución.

Además, una limitación importante es que no es posible ejecutar archivos TypeScript en módulos de Node. Esto es para evitar interrumpir el ecosistema porque al publicar TypeScript, crearía muchas incompatibilidades. Así que si alguna vez intentas ejecutar un archivo TypeScript dentro de los módulos de Node, lanzamos un error llamado módulos de Node no soportados TypeScript. La razón por la cual esto fue específicamente impuesto por el equipo de TypeScript es porque causaría muchas versiones de compatibilidad, y tu IDE realizaría verificaciones de tipo en los módulos de Node y sabemos cuán grandes son los módulos de Node, así que no queremos hacer esto. En Node 23.6, habilitamos tipos de strip experimentales por defecto. Así que puedes ejecutar Node file.ts por defecto sin pasar ninguna bandera.

Además, hemos trabajado en la detección de sintaxis de TypeScript en Eval. Este es un tema muy interesante. Así que esto es, por ejemplo, podemos ver import util from util, y cost foo es un valor de cadena una palabra. Esta es una cadena ESM de TypeScript. Así que Node.js intenta evaluar si la sintaxis es un módulo común JS, que no lo es. Intentará de nuevo como un módulo ES, pero no lo es porque es TypeScript. Así que eso fallará. Si falla, intentará eliminar los tipos, así que intentará transpilar, como eliminar la cadena de esto, el tipo de cadena de punto de esta cadena. Así que foo ahora, esto es JavaScript puro, y esto es JavaScript puro ESM. Así que si esto falla, significa que tienes un error de sintaxis, o la sintaxis no es soportada. Así que lanzará el error del paso dos, más el mensaje del compilador de TypeScript. Esto es para evitar cambios drásticos en el error que se lanza. Y volverá a intentar ejecutar la cadena como un JS común, pero sabemos que es ESM, así que fallará. Y finalmente intentará de nuevo como un módulo ESM que es correcto. Así que puedes ver que la detección de sintaxis es muy complicada. Pero puedes omitir todo este sobrecosto especificando qué tipo de sintaxis es. Así que puedes usar la bandera guion guion input type para decir que este es un módulo TypeScript, o TypeScript común JS, y Node sabrá exactamente qué hacer.

8. Ambiguity in Syntax and Future Steps

Short description:

Ambigüedad en la sintaxis: JavaScript vs TypeScript. TypeScript introduce la bandera de sintaxis solo borrable para asegurar la compatibilidad con Node.js. Los próximos pasos incluyen la corrección de errores, mejoras de rendimiento y próximas versiones de Node.js. Únete a nosotros en el repositorio de Node.js TypeScript para más información.

decir que este es un módulo TypeScript, o TypeScript común JS, y Node sabrá exactamente qué hacer. Hay alguna sintaxis que es ambigua. Por ejemplo, fetch object. Esto parece TypeScript, pero esto es válido JavaScript. Si intentas ejecutarlo en Node, devolverá falso. Y si lo intentas en el navegador, también devolvería falso. Esto se debe a que el angular se detecta como menor. Así que es una sintaxis válida de JavaScript. Y hay ambigüedad porque si intentas ejecutar esto en el playground de TS, esto se ejecutará como un fetch. Así que en realidad realizará una llamada HTTP. Si intentas ejecutarlo en Node con el tipo de entrada como TypeScript común JS también realizará un fetch. Así que como puedes ver, la misma sintaxis, si es JavaScript o TypeScript, cambia el comportamiento.

Así que este es un gran problema. TypeScript, en la última versión, anunció una nueva bandera llamada sintaxis solo borrable. Esto coincidirá con el comportamiento de Node.js, así que toda la sintaxis que no es soportada por Node.js lanzará un error en TypeScript cuando verifiques los tipos. Esto es muy bueno porque ahora puedes verificar los tipos y asegurarte de que la sintaxis que estás escribiendo puede ser ejecutada por Node. Esta es la configuración de TypeScript que sugerimos a nuestros usuarios.

Así que todas las banderas de las que hablamos antes. ¿Y cuáles son los próximos pasos? Seguiré corrigiendo errores, trabajaré en hacerlo más rápido y estoy trabajando en marcarlo en Node 22, y espero hacerlo estable en Node 24 que viene en muy pronto. Así que si lo pruebas, puedes unirte a nosotros en el repositorio de Node.js TypeScript. Tenemos reuniones, puedes consultar el calendario de Node.js y eso es todo.

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.