Las mentiras que nos contamos usando TypeScript

Rate this content
Bookmark

¿Qué tan segura es la seguridad de tipo de TypeScript? ¿Cuánto puedes confiar en tu código tipado estáticamente? ¿Incluso puedes considerar el sistema de tipos de TypeScript "fuerte"? En esta charla, observamos situaciones en las que TypeScript falla terriblemente y aprendemos por qué las cosas tienen que ser así. Hablamos de compromisos, soluciones alternativas y, finalmente, soluciones para todas las malditas y terribles mentiras que nos contamos a nosotros mismos cuando usamos TypeScript.

FAQ

TypeScript es un sistema de tipos para desarrolladores de JavaScript que ayuda a encontrar y corregir errores, como se demuestra cuando TypeScript identifica aproximadamente 10 errores en 15 líneas de código.

TypeScript intenta evitar problemas durante la ejecución del código, asegurándose de que los tipos de datos sean correctos antes de la ejecución, aunque hay casos donde puede compilar código que luego se bloquea en runtime.

El orador ha escrito dos libros sobre TypeScript: 'TypeScript, las partes buenas' y 'TypeScript Couple', que aborda 100 problemas reales para resolver juntos.

Aunque TypeScript es efectivo para detectar tipos incorrectos, hay situaciones en las que el código puede pasar la compilación pero aún así fallar en runtime debido a errores no detectados durante el desarrollo.

Una sobrecarga de funciones en TypeScript permite definir varias funciones con el mismo nombre pero con diferentes implementaciones o tipos de parámetros, lo que puede ser útil para manejar diversos tipos de datos de entrada.

El uso de 'any' en TypeScript significa que no se está realizando ninguna comprobación de tipo en ese punto del código, dejando al desarrollador la responsabilidad de asegurar la corrección del tipo de datos.

Mejorar la seguridad de tipo en TypeScript puede lograrse utilizando 'unknown' en lugar de 'any', lo que obliga a realizar comprobaciones adicionales antes de proceder con los datos.

TypeScript pone énfasis en la productividad de los desarrolladores, equilibrando la corrección de tipos con la facilidad de uso, lo que lo ha hecho más popular en comparación con sistemas como Flow que se centran en la corrección de tipos rigurosa.

 Stefan Baumgartner
Stefan Baumgartner
28 min
21 Sep, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla discute las limitaciones de TypeScript y las mentiras que nos contamos a nosotros mismos sobre su seguridad de tipo. Explora ejemplos de operaciones inseguras y la manipulación del sistema de tipos utilizando palabras clave como afirmación de tipo y función es dado. La charla también cubre la captura de errores de sintaxis, incompatibilidades de tipo y la complejidad de los tipos condicionales y genéricos. Enfatiza la importancia de entender las limitaciones de TypeScript y tomar decisiones bien informadas como ingenieros de software.

1. Introducción a TypeScript y sus limitaciones

Short description:

Bienvenidos a mi charla, Las mentiras que nos contamos usando TypeScript. Ha sido un fantástico congreso de TypeScript hasta ahora. Hoy, hablo sobre un ejemplo con el que TypeScript está totalmente de acuerdo. Simplemente estamos obteniendo algunos datos de una API y concatenándolos con algo más. TypeScript dice que es un buen código, pero es muy probable que se bloquee en tiempo de ejecución. Vamos a repasar el código paso a paso.

Hola, bienvenidos a mi charla, Las mentiras que nos contamos usando TypeScript. Ha sido un fantástico congreso de TypeScript hasta ahora. Han visto a muchos oradores fantásticos, personas que quería conocer desde hace mucho tiempo, personas con las que he interactuado en las redes sociales y que son lo mejor de lo mejor en TypeScript. Ahora, necesito decirles que lo siento. Lo siento porque han tenido charlas fantásticas de oradores fantásticos. Ahora, voy a aplastar sus sueños y destruir sus esperanzas porque esta no va a ser una charla divertida. He hecho una buena cantidad de desarrollo con TypeScript. He escrito dos libros al respecto, uno de los cuales es TypeScript, las partes buenas. Así es como funciona el sistema de tipos para los desarrolladores de JavaScript. El otro es TypeScript Couple donde tenemos 100 problemas reales que vamos a resolver juntos. Y a lo largo de mi viaje, siempre comienzo con este ejemplo donde TypeScript es absolutamente perfecto. Tengo estos códigos de JavaScript. No se preocupen por lo que hace, pero es solo JavaScript. El navegador lo ejecuta. Simplemente no funciona. No hay ningún error que se esté lanzando. Nada te dice qué está mal. Se ejecuta, no lanza ningún error, pero no produce los resultados correctos. Y para ejemplos como ese, TypeScript es fantástico porque TypeScript, justo cuando lo activo, encuentra alrededor de, no sé, 10 errores en 15 líneas de código. Eso es para lo que estamos aquí. Ese es el propósito de TypeScript. Pero eso no es de lo que voy a hablar hoy. Hoy, hablo sobre lo totalmente opuesto. Voy a mostrarles un ejemplo con el que TypeScript está totalmente de acuerdo. Simplemente estamos obteniendo algunos datos de una API y concatenándolos con algo más. Y TypeScript dice, bueno, los tipos coinciden. Este es un buen código. Se compila, puedes enviarlo, y es muy probable que se bloquee en runtime. Ya sabes, en runtime, esas cosas que TypeScript se supone que debe prevenir. Vamos a repasar el código paso a paso.

2. Obtención de datos y manejo de errores

Short description:

La primera función obtiene datos de la API de Star Wars utilizando sobrecargas de funciones. Desenvolvemos los datos obtenidos y manejamos cualquier error de sintaxis potencial. Luego concatenamos arrays de personas o especies utilizando el método push, y finalmente, creamos un nuevo array de personas y añadimos especies a él. Este programa tiene alrededor de 10 líneas de código y ahora abordaremos los problemas paso a paso, comenzando con el núcleo de nuestra estructura.

La primera función obtiene data. La llamamos list entries, y tienes dos ... tienes dos sobrecargas de funciones que definen una API para ti y tus usuarios. Si obtienes un tipo de especies, entonces estás obteniendo una promesa de especies a cambio. Si estás obteniendo un tipo de personas, entonces estás obteniendo una promesa de personas a cambio. Estamos accediendo a la API de Star Wars, que es genial si quieres hacer cualquier prueba de rest. Y tienes una API muy personalizada para que realmente sepas lo que deberías obtener a cambio. Luego tienes la tercera sobrecarga de función, que es la implementación de la función real para ti. A continuación, estamos obteniendo data y dado que tiene alguna información meta, la estamos desenvolviendo. Solo estamos interesados en los resultados. Una cosa que es muy interesante acerca de esta línea de código es que estamos haciendo algo, lo siento, que estamos haciendo algo de manejo de errores. Así que hay una parte donde decimos, bueno, esa llamada result.JSON en la línea tres podría salir mal. Así que es mejor atrapar ese error de sintaxis. ¿Qué pasa si no obtenemos ningún JSON de vuelta? Fantástico. Cinco líneas de código para esa función, tres líneas de información de tipo. La siguiente es una línea. Solo la formateé un poco para esta diapositiva. Luego estamos concatenando una promesa de un array de personas o especies a otra lista de array de personas o especies. Así que estamos concatenando esos dos con el método push de un array. Y finalmente, estamos llamando así que estamos creando un nuevo array de personas y estamos añadiendo especies al array de personas. Muy bien. Este es nuestro programa. Son alrededor de, no sé, 10 líneas reales de código, un par de información de tipo. Y quiero preguntarte si miras el programa entero, ¿sabes qué está yendo mal o sabes qué se supone que debe ir mal? Entonces, bueno, creo que todo. ¿Y dónde va mal? En todas partes. ¿Y cuándo va mal? Sí, uno por uno, porque somos de un solo hilo. Pero no te preocupes, vamos a pasar por ello paso a paso. Ahora vamos a mirar todos nuestros problemas. Problema número uno en el capítulo uno,

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

TypeScript y React: Secretos de un matrimonio feliz
React Advanced Conference 2022React Advanced Conference 2022
21 min
TypeScript y React: Secretos de un matrimonio feliz
Top Content
TypeScript y React son inseparables. ¿Cuál es el secreto de su exitosa unión? Bastante código extrañamente extraño. Aprende por qué useRef siempre se siente extraño, cómo manejar los genéricos en los hooks personalizados y cómo los tipos de unión pueden transformar tus componentes.
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
No pensamos en React como si tuviera sus propios tipos. Pero los tipos de React son una parte fundamental del marco de trabajo - supervisados por el equipo de React, y coordinados con las principales lanzamientos de React.En esta charla de codificación en vivo, veremos todos los tipos que te has estado perdiendo. ¿Cómo obtienes el tipo de props de un componente? ¿Cómo sabes qué ref toma un componente? ¿Deberías usar React.FC? ¿Y qué pasa con JSX.Element?Te irás con un montón de ideas emocionantes para llevar a tus aplicaciones de React, y esperamos que con una nueva apreciación por las maravillas de React y TypeScript trabajando juntos.
Deja de Escribir tus Rutas
Vue.js London 2023Vue.js London 2023
30 min
Deja de Escribir tus Rutas
Cuanto más trabajas en una aplicación, más complicado se vuelve su enrutamiento y más fácil es cometer un error. "¿Se llamaba la ruta usuarios o usuario?", "¿Tenía un parámetro id o era userId?". Si solo TypeScript pudiera decirte cuáles son los nombres y parámetros posibles. Si solo no tuvieras que escribir una sola ruta más y dejar que un complemento lo haga por ti. En esta charla repasaremos lo que se necesitó para traer rutas automáticamente tipadas para Vue Router.
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
Voy a profundizar en los internos de Nuxt para describir cómo hemos construido un marco de trabajo primero-TypeScript que está profundamente integrado con el IDE del usuario y la configuración de comprobación de tipos para ofrecer seguridad de tipo de pila completa de extremo a extremo, sugerencias para diseños, middleware y más, opciones de configuración de tiempo de ejecución tipadas e incluso enrutamiento tipado. Además, destacaré lo que más me emociona hacer en los días venideros y cómo TypeScript hace eso posible no solo para nosotros sino para cualquier autor de bibliotecas.
Compilaciones de TypeScript más rápidas con --isolatedDeclarations
TypeScript Congress 2023TypeScript Congress 2023
24 min
Compilaciones de TypeScript más rápidas con --isolatedDeclarations
Top Content
La verificación de tipos en una base de código TypeScript puede ser lenta, especialmente para monorepos que contienen muchos proyectos que necesitan usar el verificador de tipos para generar archivos de declaración de tipos. En esta charla, presentamos, por primera vez, una nueva característica de TypeScript en la que estamos trabajando llamada “Declaraciones Aisladas” que permite que los archivos DTS se generen sin usar el verificador de tipos en absoluto. ¡Esto abre la puerta a una generación de declaraciones más rápida en TypeScript mismo, así como en herramientas externas escritas en otros lenguajes como ESBuild y swc. Verás cómo usar esta nueva opción, y tal vez (solo tal vez) te convencerás de los beneficios de los tipos de retorno explícitos. Lo más importante, mostraremos cómo las Declaraciones Aisladas permiten compilaciones paralelas para distribuir el trabajo a través de tus núcleos de CPU para mejorar significativamente la velocidad de compilación de tus proyectos TypeScript.
Aplicaciones React (+Native) full-stack y seguras con tRPC.io
React Advanced Conference 2021React Advanced Conference 2021
6 min
Aplicaciones React (+Native) full-stack y seguras con tRPC.io
Top Content
¿Por qué estamos los desarrolladores tan obsesionados con desacoplar cosas que son de naturaleza acoplada? tRPC es una biblioteca que reemplaza la necesidad de GraphQL o REST para APIs internas. Al usarla, simplemente escribes funciones de backend cuyas formas de entrada y salida se infieren instantáneamente en tu frontend sin ninguna generación de código; haciendo que la escritura de esquemas de API sea cosa del pasado. Es ligera, no está vinculada a React, se puede almacenar en caché HTTP y se puede adoptar de forma incremental. En esta charla, daré un vistazo a la DX que puedes obtener de tRPC y cómo (y por qué) empezar.

Workshops on related topic

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.
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
React Advanced Conference 2022React Advanced Conference 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.
Consejos y Trucos Profundos de TypeScript
Node Congress 2024Node Congress 2024
83 min
Consejos y Trucos Profundos de TypeScript
Top Content
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.
Practica Técnicas de TypeScript Construyendo una Aplicación con Componentes de Servidor React
TypeScript Congress 2023TypeScript Congress 2023
131 min
Practica Técnicas de TypeScript Construyendo una Aplicación con Componentes de Servidor React
Workshop
Maurice de Beijer
Maurice de Beijer
En esta masterclass práctica, Maurice te guiará personalmente a través de una serie de ejercicios diseñados para empoderarte con una profunda comprensión de los Componentes de Servidor React y el poder de TypeScript. Descubre cómo optimizar tus aplicaciones, mejorar el rendimiento y desbloquear nuevas posibilidades.
 
Durante la masterclass, realizarás:
- Maximizar la mantenibilidad y escalabilidad del código con prácticas avanzadas de TypeScript
- Desatar los beneficios de rendimiento de los Componentes de Servidor React, superando enfoques tradicionales
- Potenciar tu TypeScript con el poder de los Tipos Mapeados
- Hacer tus tipos TypeScript más seguros con Tipos Opacos
- Explorar el poder de los Tipos de Plantillas Literales al usar Tipos Mapeados
 
Maurice estará virtualmente a tu lado, ofreciendo una guía completa y respondiendo a tus preguntas mientras navegas por cada ejercicio. Al final de la masterclass, habrás dominado los Componentes de Servidor React, armado con un nuevo arsenal de conocimientos de TypeScript para potenciar tus aplicaciones React.
 
No pierdas esta oportunidad de elevar tu experiencia en React a nuevas alturas. Únete a nuestra masterclass y desbloquea el potencial de los Componentes de Servidor React con TypeScript. Tus aplicaciones te lo agradecerán.
Tipos avanzados de TypeScript para diversión y confiabilidad
TypeScript Congress 2022TypeScript Congress 2022
116 min
Tipos avanzados de TypeScript para diversión y confiabilidad
Workshop
Maurice de Beijer
Maurice de Beijer
Si estás buscando sacar el máximo provecho de TypeScript, este masterclass es para ti! En este masterclass interactivo, exploraremos el uso de tipos avanzados para mejorar la seguridad y previsibilidad de tu código TypeScript. Aprenderás cuándo usar tipos como unknown o never. Exploraremos el uso de predicados de tipo, guardias y verificación exhaustiva para hacer tu código TypeScript más confiable tanto en tiempo de compilación como en tiempo de ejecución. Aprenderás sobre los tipos mapeados incorporados, así como cómo crear tus propias utilidades de mapeo de tipos. Y comenzaremos a programar en el sistema de tipos de TypeScript utilizando tipos condicionales e inferencia de tipos.
¿Estás familiarizado con los conceptos básicos de TypeScript y quieres profundizar? Entonces únete a mí con tu computadora portátil en este masterclass avanzado e interactivo para aprender todos estos temas y más.
Puedes encontrar las diapositivas, con enlaces, aquí: http://theproblemsolver.nl/docs/ts-advanced-workshop.pdf
Y el repositorio que utilizaremos está aquí: https://github.com/mauricedb/ts-advanced
Dominando Node.js Test Runner
TestJS Summit 2023TestJS Summit 2023
78 min
Dominando Node.js Test Runner
Workshop
Marco Ippolito
Marco Ippolito
Node.js test runner es moderno, rápido y no requiere bibliotecas adicionales, pero entenderlo y usarlo bien puede ser complicado. Aprenderás a utilizar Node.js test runner a su máximo potencial. Te mostraremos cómo se compara con otras herramientas, cómo configurarlo y cómo ejecutar tus pruebas de manera efectiva. Durante la masterclass, haremos ejercicios para ayudarte a sentirte cómodo con el filtrado, el uso de afirmaciones nativas, la ejecución de pruebas en paralelo, el uso de CLI y más. También hablaremos sobre trabajar con TypeScript, hacer informes personalizados y la cobertura de código.