Historias y Estrategias de la Conversión a TypeScript

Rate this content
Bookmark

TypeScript es genial, pero migrar una aplicación existente a él puede ser un dolor de cabeza. Codecademy tomó múltiples aplicaciones React existentes y las convirtió a TypeScript. Cubriremos cómo hacer que ese tipo de conversiones sean exitosas desde puntos de vista tanto culturales como técnicos.

FAQ

Josh Goldberg es un desarrollador de front-end que ha trabajado en el equipo de plataforma web en Code Academy y anteriormente en Microsoft. Tiene experiencia en la conversión de JavaScript a TypeScript y ha desarrollado habilidades en compartir conocimiento técnico dentro de equipos de desarrollo.

TypeScript es un lenguaje de programación que extiende JavaScript añadiendo tipos estáticos. Code Academy decidió adoptarlo para mejorar la estabilidad de su aplicación de front-end, reducir errores y bloqueos en el sitio, y facilitar el manejo de una base de código grande y compleja.

El equipo se preparó mediante la realización de presentaciones internas para compartir conocimientos y familiarizar a todos con TypeScript. Se identificaron expertos y animadores dentro del equipo que ayudaron a propagar el entusiasmo y la información técnica necesaria para la transición.

La estrategia incluyó empezar con cambios mínimos, convertir algunos archivos esenciales para asegurarse de que la infraestructura era compatible y luego adoptar una estrategia de solicitudes de extracción dedicadas para áreas específicas, priorizando la facilidad de adopción sobre la rapidez.

Algunas de las principales lecciones incluyeron la importancia de automatizar la conversión tanto como sea posible, preparar guías de estilo y FAQs para resolver dudas comunes, y la necesidad de separar los cambios significativos de código de los cambios de conversión para facilitar las revisiones y la adopción.

Josh Goldberg recomienda el sitio web TypeScriptland.org por su excelente documentación y el curso de Code Academy sobre TypeScript. También menciona guías específicas para integrar TypeScript con herramientas populares de desarrollo como Babel y webpack.

Josh Goldberg
Josh Goldberg
20 min
14 May, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta Charla discute el proceso de conversión a TypeScript en CodeCademy. Se enfatiza la importancia de fomentar la adopción y el intercambio de conocimientos dentro del equipo. La Charla también destaca la integración perfecta de TypeScript en la infraestructura y el sistema de construcción existentes. La estrategia para la conversión a TypeScript involucró el uso de solicitudes de extracción dedicadas y herramientas automatizadas. El orador comparte consejos sobre la automatización de cambios, la configuración de una guía de estilo y la celebración de victorias. También se mencionan recursos para aprender TypeScript.

1. Introduction to Converting to TypeScript

Short description:

Hola, y bienvenidos a historias y estrategias de la conversión a TypeScript conmigo, Josh Goldberg. Para empezar, hola, soy de Upstate New York. Soy un desarrollador de front-end en el equipo de plataforma web en Code Academy, anteriormente Microsoft, y soy un papá de gatos. Comenzando, ¿dónde estaba CodeCademy antes de TypeScript? Retrocedamos hasta principios de 2019, una época más sencilla. Teníamos una aplicación principal de front-end, que en ese momento consistía en alrededor de 2,000 archivos de React y Redux, algunos archivos más en un sistema de diseño separado, que en sí mismo se convirtió a TypeScript como prueba de concepto, y la mayoría de los miembros del equipo solo habían oído vagamente hablar de TypeScript.

Hola, y bienvenidos a historias y estrategias de la conversión a TypeScript conmigo, Josh Goldberg.

Para empezar, hola, soy de Upstate New York.

Soy un desarrollador de front-end en el equipo de plataforma web en Code Academy, anteriormente Microsoft,

y soy un papá de gatos.

Mi esposa y yo tenemos algunos gatos.

Son muy lindos.

Todo el contenido de esta presentación está disponible en mi sitio web bajo el enlace de las diapositivas en esta charla en joshuakgoldberg.com.

Esta presentación incluye varias imágenes animadas en bucle.

Si te distraen, te recomendaría verlas en PowerPoint, que te permite pausarlas.

En cuanto a la agenda, primero vamos a hablar sobre Code Academy en 2019 antes de dar el salto a TypeScript, cómo tomamos esa decisión de pasar a TypeScript, algunas de las técnicas que utilizamos para compartir conocimientos en el equipo, los detalles técnicos de lo que hicimos para hacer ese cambio, y luego algunas de las lecciones que aprendimos al final del proceso, cosas que tal vez puedas utilizar en tus conversiones, espero. Buen material.

Comenzando, ¿dónde estaba CodeCademy antes de TypeScript?

Retrocedamos hasta principios de 2019, una época más sencilla.

Teníamos una aplicación principal de front-end, que en ese momento consistía en alrededor de 2,000 archivos de React y Redux, algunos archivos más en un sistema de diseño separado, que en sí mismo se convirtió a TypeScript como prueba de concepto, y la mayoría de los miembros del equipo solo habían oído vagamente hablar de TypeScript.

No había un gran tema o punto de conocimiento en el equipo.

El equipo en sí era bastante pequeño.

Eran solo alrededor de 20, tal vez 30 ingenieros como máximo.

La mayoría de las personas realmente no tenían experiencia con TypeScript y, como en cualquier equipo de ingeniería, había trabajo en curso en torno a características y correcciones de errores.

Entonces, ¿cómo lo hicimos?

¿Cómo hicimos ese cambio a TypeScript?

Primero, tomamos la decisión de que queríamos hacerlo en primer lugar, y cuando hay voluntad, hay una manera, pero tiene que haber voluntad.

Cualquier cambio arquitectónico debe contar con el apoyo informado de sus constituyentes.

Creo que mucha gente, especialmente aquellos que son nuevos en un equipo, cometen el error de tratar de sacar conclusiones de inmediato y empujar una agenda, enviar propuestas, lo cual muchas veces es un error hacerlo de inmediato.

Es una buena idea absorber las experiencias de ser un desarrollador en el equipo, hablar con la gente, tener una idea de cuáles son los problemas reales, y luego utilizar eso para informar tus decisiones sobre qué impulsar y cómo.

No me malinterpretes.

No estoy tratando de menospreciar el hecho de entrar en un equipo con una perspectiva fresca e intentar hacer que la gente entienda y escuche esa perspectiva.

Eso es genial.

Eso es encomiable.

Los equipos definitivamente deberían estar abiertos a que llegues con ideas frescas, pero esas ideas frescas y perspectivas tienen muchas más posibilidades de tener éxito si las validas con quienes te rodean, si puedes convencer a las personas de su validez.

Así que no seas un malcriado.

Definitivamente habla con la gente antes de intentar presionarlos para que hagan cosas.

Si realmente quieres presionar a la gente para que haga cosas, te recomiendo encarecidamente que crees algún tipo de ambiente emocionante para ello.

Si hay algún cambio que quieras hacer, como TypeScript, quieres que la gente lo sienta.

Deberían estar emocionados en sus huesos.

2. Fomentando la adopción de TypeScript

Short description:

Esto es increíble. Esto va a hacer mi vida más feliz y mejor, el código va a funcionar, va a ser increíble, quiero hacerlo. Esa es la sensación que quieres transmitir con algunas de las decisiones más importantes que quieres impulsar en el equipo. Parte de la forma en que lo hicimos fue alentar a las personas a pensar en cómo TypeScript ayuda a sus objetivos existentes, siempre es una buena idea.

Esto es increíble. Esto va a hacer mi vida más feliz y mejor, el código va a funcionar, va a ser increíble, quiero hacerlo. Esa es la sensación que quieres transmitir con algunas de las decisiones más importantes que quieres impulsar en el equipo.

Parte de la forma en que lo hicimos fue alentar a las personas a pensar en cómo TypeScript ayuda a sus objetivos existentes, siempre es una buena idea. Mi imagen favorita de la fase de evangelización de nuestra versión de TypeScript al comienzo fue anunciarlo como parte del embudo de adquisición de errores, como lo llamamos, o el antifunnel. No dibujado a escala ya que no hay una escala confiable aquí. Ninguna parte de esto, ya sea la revisión de código o lo que sea, puede prevenir realmente todos los errores, pero juntos pueden ayudar a reducir los errores y los bloqueos en los sitios. Eso fue una gran parte del plan del equipo a principios de 2019, algo en lo que queríamos mejorar, la estabilidad, no tener errores y peculiaridades molestas. TypeScript es una de las características principales de TypeScript, y te ayuda a encontrar errores temprano.

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

Una Guía del Comportamiento de Renderizado de React
React Advanced Conference 2022React Advanced Conference 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
React es una biblioteca para "renderizar" UI a partir de componentes, pero muchos usuarios se encuentran confundidos acerca de cómo funciona realmente el renderizado de React. ¿Qué significan términos como "renderizado", "reconciliación", "Fibers", y "committing"? ¿Cuándo ocurren los renderizados? ¿Cómo afecta el Contexto al renderizado, y cómo las bibliotecas como Redux causan actualizaciones? En esta charla, aclararemos la confusión y proporcionaremos una base sólida para entender cuándo, por qué, y cómo React renderiza. Veremos: - Qué es realmente el "renderizado" - Cómo React encola los renderizados y el comportamiento de renderizado estándar - Cómo se utilizan las claves y los tipos de componentes en el renderizado - Técnicas para optimizar el rendimiento del renderizado - Cómo el uso del contexto afecta al comportamiento del renderizado - Cómo las bibliotecas externas se integran en el renderizado de React
Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix es un nuevo marco de trabajo web de los creadores de React Router que te ayuda a construir mejores y más rápidos sitios web a través de una sólida comprensión de los fundamentos de la web. Remix se encarga de las tareas pesadas como la renderización del servidor, la división de código, la precarga y la navegación, y te deja con la parte divertida: ¡construir algo increíble!
Compilador React Forget - Entendiendo React Idiomático
React Advanced Conference 2023React Advanced Conference 2023
33 min
Compilador React Forget - Entendiendo React Idiomático
Top Content
React ofrece un contrato a los desarrolladores: cumple ciertas reglas y React puede actualizar eficiente y correctamente la interfaz de usuario. En esta charla exploraremos estas reglas en profundidad, entendiendo el razonamiento detrás de ellas y cómo desbloquean nuevas direcciones como la memoización automática.
Uso efectivo de useEffect
React Advanced Conference 2022React Advanced Conference 2022
30 min
Uso efectivo de useEffect
Top Content
¿Puede useEffect afectar negativamente a tu base de código? Desde la obtención de datos hasta la lucha con las APIs imperativas, los efectos secundarios son una de las mayores fuentes de frustración en el desarrollo de aplicaciones web. Y seamos honestos, poner todo en ganchos useEffect no ayuda mucho. En esta charla, desmitificaremos el gancho useEffect y obtendremos una mejor comprensión de cuándo (y cuándo no) usarlo, así como descubriremos cómo los efectos declarativos pueden hacer que la gestión de efectos sea más mantenible incluso en las aplicaciones React más complejas.
Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Concurrent React y Server Components están cambiando la forma en que pensamos sobre el enrutamiento, la renderización y la obtención de datos en las aplicaciones web. Next.js recientemente compartió parte de su visión para ayudar a los desarrolladores a adoptar estas nuevas características de React y aprovechar los beneficios que desbloquean.En esta charla, exploraremos el pasado, presente y futuro del enrutamiento en las aplicaciones de front-end y discutiremos cómo las nuevas características en React y Next.js pueden ayudarnos a arquitectar aplicaciones más eficientes y con más funciones.
(Más fácil) Visualización interactiva de datos en React
React Advanced Conference 2021React Advanced Conference 2021
27 min
(Más fácil) Visualización interactiva de datos en React
Top Content
Si estás construyendo un tablero de control, una plataforma de análisis o cualquier aplicación web donde necesites dar a tus usuarios una visión de sus datos, necesitas hermosas, personalizadas, visualizaciones de datos interactivas en tu aplicación React. Pero construir visualizaciones a mano con una biblioteca de bajo nivel como D3 puede ser un gran dolor de cabeza, que implica reinventar la rueda. En esta charla, veremos cómo el desarrollo de visualización de datos puede ser mucho más fácil gracias a herramientas como Plot, una biblioteca de dataviz de alto nivel para una rápida y fácil creación de gráficos, y Observable, un entorno de prototipado de dataviz reactivo, ambos del creador de D3. A través de ejemplos de codificación en vivo, exploraremos cómo los refs de React nos permiten delegar la manipulación del DOM para nuestras visualizaciones de datos, y cómo la funcionalidad de incrustación de Observable nos permite reutilizar fácilmente las visualizaciones construidas por la comunidad para nuestros propios datos y casos de uso. Al final de esta charla, sabremos cómo obtener una hermosa, personalizada, visualización de datos interactiva en nuestras aplicaciones con una fracción del tiempo y esfuerzo!

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Aventuras de Renderizado Concurrente en React 18
React Advanced Conference 2021React Advanced Conference 2021
132 min
Aventuras de Renderizado Concurrente en React 18
Top Content
Featured WorkshopFree
Maurice de Beijer
Maurice de Beijer
Con el lanzamiento de React 18 finalmente obtenemos el tan esperado renderizado concurrente. Pero, ¿cómo va a afectar eso a tu aplicación? ¿Cuáles son los beneficios del renderizado concurrente en React? ¿Qué necesitas hacer para cambiar al renderizado concurrente cuando actualices a React 18? ¿Y qué pasa si no quieres o no puedes usar el renderizado concurrente todavía?

¡Hay algunos cambios de comportamiento de los que debes estar al tanto! En esta masterclass cubriremos todos esos temas y más.

Acompáñame con tu portátil en esta masterclass interactiva. Verás lo fácil que es cambiar al renderizado concurrente en tu aplicación React. Aprenderás todo sobre el renderizado concurrente, SuspenseList, la API startTransition y más.
Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
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.
Masterclass Web3 - Construyendo Tu Primer Dapp
React Advanced Conference 2021React Advanced Conference 2021
145 min
Masterclass Web3 - Construyendo Tu Primer Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
En esta masterclass, aprenderás cómo construir tu primer dapp de pila completa en la blockchain de Ethereum, leyendo y escribiendo datos en la red, y conectando una aplicación de front end al contrato que has desplegado. Al final de la masterclass, entenderás cómo configurar un entorno de desarrollo de pila completa, ejecutar un nodo local e interactuar con cualquier contrato inteligente usando React, HardHat y Ethers.js.
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn