Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Mi viaje a TypeScript no fue directo ni rápido. Empecé en la escuela escribiendo principalmente Java, luego C++, y como muchos nuevos desarrolladores criados en lenguajes tipados estáticamente, despreciaba JavaScript como "sólo" el pequeño y descuidado lenguaje de scripting que la gente lanza en los sitios web.

Mi primer proyecto sustancial en el lenguaje fue un tonto remake del videojuego original Super Mario Bros. en HTML5/CSS/JavaScript puro y, típico de muchos primeros proyectos, fue un absoluto desastre. Al principio del proyecto me disgustaba instintivamente la extraña flexibilidad y falta de guardarraíles de JavaScript. Sólo hacia el final empecé a respetar realmente las características y peculiaridades de JavaScript: su flexibilidad como lenguaje, su capacidad para mezclar y combinar pequeñas funciones y su capacidad para funcionar sin más en los navegadores de los usuarios a los pocos segundos de cargar la página.

Cuando terminé aquel primer proyecto, me había enamorado de JavaScript.

El análisis estático (herramientas que analizan tu código sin ejecutarlo), como TypeScript, también me provocó al principio un malestar visceral. Pensaba queJavaScript es tan ligero y fluido, ¿por qué atascarnos con estructuras y tipos rígidos? ¿Estábamos volviendo a los mundos de Java y C++ que yo había dejado atrás?

Volviendo a mis antiguos proyectos, me costó 10 minutos leer mi antiguo y enrevesado código JavaScript para comprender lo desordenadas que podían llegar a ser las cosas sin un análisis estático. El acto de limpiar ese código me mostró todos los lugares en los que me habría venido bien algo de estructura. A partir de ese momento, me enganché a añadir a mis proyectos todo el análisis estático que pudiera.

Ha pasado casi una década desde que jugueteé por primera vez con TypeScript, y lo disfruto tanto como siempre. El lenguaje sigue evolucionando con nuevas características y es más útil que nunca para proporcionar seguridad y estructura a JavaScript.

Espero que al leer Aprendiendo TypeScript puedas aprender a apreciar TypeScript como yo lo hago: no sólo como un medio para encontrar errores y erratas -y desde luego no como un cambio sustancial en los patrones de código JavaScript- sino como JavaScript con tipos: un hermoso sistema para declarar el modo en que debe funcionar nuestro JavaScript, y ayudarnos a ceñirnos a él.

Quién debería leer este libro

Si sabes escribir código JavaScript, puedes ejecutar comandos básicos en un terminal y estás interesado en aprender sobre TypeScript, este libro es para ti.

Tal vez hayas oído que TypeScript puede ayudarte a escribir mucho JavaScript con menos errores (¡cierto!) o a documentar bien tu código para que lo lean otras personas (¡también cierto!). Tal vez hayas visto que TypeScript aparece en muchas ofertas de trabajo, o en un nuevo puesto que estás empezando.

Cualquiera que sea tu motivo, siempre que conozcas los fundamentos de JavaScript -variables, funciones, cierres/ámbito y clases- este libro te llevará de no tener conocimientos de TypeScript a dominar los fundamentos y las características más importantes del lenguaje. Al final de este libro, comprenderás:

  • La historia y el contexto de por qué TypeScript es útil además de "vainilla JavaScript

  • Cómo modela el código un sistema de tipos

  • Cómo analiza el código un comprobador de tipos

  • Cómo utilizar las anotaciones de tipo sólo de desarrollo para informar al sistema de tipos

  • Cómo funciona TypeScript con los IDE (Entornos de Desarrollo Integrado) para proporcionar herramientas de exploración y refactorización del código

Y serás capaz de hacerlo:

  • Explicar las ventajas de TypeScript y las características generales de su sistema de tipos.

  • Añade anotaciones de tipo donde sea útil en tu código.

  • Representa tipos moderadamente complejos utilizando las inferencias incorporadas y la nueva sintaxis de TypeScript.

  • Utiliza TypeScript para ayudar al desarrollo local en la refactorización del código.

Por qué escribí este libro

TypeScript es un lenguaje muy popular tanto en la industria como en el código abierto:

  • Los informes de GitHub sobre el estado de los océanos de 2021 y 2020 lo sitúan como el cuarto idioma más utilizado en la plataforma, frente al séptimo en 2019 y 2018 y el décimo en 2017.

  • La Encuesta a Desarrolladores 2021 de StackOverflow lo sitúa como el tercer lenguaje más querido del mundo (72,73% de los usuarios).

  • La Encuesta sobre el Estado de JS en 2020 muestra que TypeScript tiene sistemáticamente altos niveles de satisfacción y uso como herramienta de construcción y como variante de JavaScript.

Para los desarrolladores de frontend, TypeScript está bien soportado en todas las principales bibliotecas y frameworks de interfaz de usuario, incluyendo Angular, que recomienda encarecidamente TypeScript, así como Gatsby, Next.js, React, Svelte y Vue. Para los desarrolladores de backend, TypeScript genera JavaScript que se ejecuta de forma nativa en Node.js; Deno, un tiempo de ejecución similar del creador de Node, hace hincapié en soportar directamente los archivos TypeScript.

Sin embargo, a pesar de esta plétora de apoyo a proyectos populares, me decepcionó bastante la falta de buenos contenidos introductorios en línea cuando aprendí el lenguaje por primera vez. Muchas de las fuentes de documentación en línea no hacían un gran trabajo a la hora de explicar qué es un "sistema de tipos" o cómo utilizarlo. A menudo daban por sentado un gran conocimiento previo tanto de JavaScript como de lenguajes fuertemente tipados, o estaban escritas sólo con ejemplos de código superficiales.

No ver un libro de O'Reilly con una bonita portada de animales presentando TypeScript hace años fue una decepción. Aunque ahora existen otros libros sobre TypeScript de editoriales como O'Reilly anteriores a éste, no pude encontrar un libro que se centrara en los fundamentos del lenguaje de la forma que yo quería: por qué funciona de la forma en que lo hace y cómo funcionan juntas sus características principales. Un libro que comienza con una explicación fundacional del lenguaje antes de ir añadiendo características una a una. Estoy encantado de poder hacer una introducción clara y completa a los fundamentos del lenguaje TypeScript para los lectores que aún no están familiarizados con sus principios.

Navegar por este libro

Aprender TypeScript tiene dos propósitos:

  • Puedes leerlo una vez para entender TypeScript en su conjunto.

  • Más adelante, podrás volver a consultarlo como una práctica referencia introductoria al lenguaje TypeScript.

Este libro pasa de los conceptos al uso práctico a través de tres secciones generales:

  • Parte I, "Conceptos": Cómo surgió JavaScript, qué le añade TypeScript y los fundamentos de un sistema de tipos tal y como lo crea TypeScript.

  • Parte II, "Características": Cómo interactúa el sistema de tipos con las principales partes de JavaScript con las que trabajarías al escribir código TypeScript.

  • Parte III, "Uso": Ahora que entiendes las características que componen el lenguaje TypeScript, cómo utilizarlas en situaciones del mundo real para mejorar tu experiencia de lectura y edición de código.

He incluido una sección de " Créditos Extra " al final de la Parte IV para cubrir las características de TypeScript menos utilizadas pero ocasionalmente útiles. No necesitarás conocerlas en profundidad para considerarte un desarrollador de TypeScript, pero todos son conceptos útiles que probablemente aparecerán cuando utilices TypeScript en proyectos del mundo real. Una vez que hayas terminado de entender las tres primeras secciones, te recomiendo encarecidamente que estudies la sección de créditos extra.

Cada capítulo comienza con un haiku para entrar en el espíritu de su contenido y termina con un juego de palabras. La comunidad de desarrollo web en su conjunto y la comunidad de TypeScript dentro de ella son conocidas por ser joviales y acogedoras con los recién llegados. He intentado que este libro sea agradable de leer para los estudiantes como yo, que no aprecianlos escritos largos y áridos.

Ejemplos y proyectos

A diferencia de muchos otros recursos que introducen TypeScript, este libro se centra intencionadamente en presentar las características del lenguaje con ejemplos independientes que muestran sólo la nueva información, en lugar de profundizar en proyectos de tamaño medio o grande. Prefiero este método de enseñanza porque pone el foco en el lenguaje TypeScript ante todo. TypeScript es útil en tantos frameworks y plataformas -muchos de los cuales experimentan actualizaciones de la API con regularidad- que no quería mantener nada específico del framework o de la plataforma en este libro.

Dicho esto, a la hora de aprender un lenguaje de programación es sumamente útil ejercitar los conceptos inmediatamente después de introducirlos. Recomiendo encarecidamente tomarse un descanso después de cada capítulo para ensayar los contenidos de ese capítulo. Cada capítulo termina con una sugerencia para visitar su sección en https://learningtypescript.com y trabajar con los ejemplos y proyectos que allí figuran.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, tipos de datos, sentencias y palabras clave.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://learningtypescript.com.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos, pero generalmente no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Aprendiendo Typescript por Josh Goldberg (O'Reilly). Copyright 2022 Josh Goldberg, 978-1-098-11033-8".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/learning-typescript.

Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media.

Míranos en YouTube: https://www.youtube.com/oreillymedia.

Agradecimientos

Este libro ha sido un esfuerzo de equipo, y me gustaría dar las gracias sinceramente a todos los que lo han hecho posible. En primer lugar, a mi sobrehumana editora jefe, Rita Fernando, por su increíble paciencia y excelente orientación a lo largo de todo el proceso de creación. También quiero dar las gracias al resto del equipo de O'Reilly: Kristen Brown, Suzanne Huston, Clare Jensen, Carol Keller, Elizabeth Kelly, Cheryl Lenser, Elizabeth Oliver y Amanda Quinn. ¡Todas sois geniales!

Muchas gracias a los revisores técnicos por sus constantes conocimientos pedagógicos de primera categoría y su experiencia en TypeScript: Mike Boyle, Ryan Cavanaugh, Sara Gallagher, Michael Hoffman, Adam Reineke y Dan Vanderkam. Este libro no sería lo mismo sin vosotros, ¡y espero haber captado con éxito la intención de todas vuestras magníficas sugerencias!

También quiero dar las gracias a los diversos compañeros y elogiadores que hicieron críticas puntuales del libro que me ayudaron a mejorar la precisión técnica y la calidad de la redacción: Robert Blake, Andrew Branch, James Henry, Adam Kaczmarek, Loren Sands-Ramshaw, Nik Stern y Lenz Weber-Tronic. ¡Todas las sugerencias ayudan!

Por último, me gustaría dar las gracias a mi familia por su amor y apoyo a lo largo de los años. A mis padres, Frances y Mark, y a mi hermano, Danny, gracias por dejarme pasar el tiempo con Legos, libros y videojuegos. A mi esposa Mariah Goldberg por su paciencia durante mis largos periodos de edición y escritura, y a nuestros gatos Luci, Tiny y Jerry por su distinguida esponjosidad y por hacerme compañía.

Get Aprender TypeScript now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.