Prefacio

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

Este es un libro para programadores de todo tipo: ingenieros profesionales de JavaScript, gente de C#, simpatizantes de Java, amantes de Python, aficionados a Ruby, empollones de Haskell. Sea cual sea el lenguaje o lenguajes en que escribas, siempre que tengas alguna experiencia programando y conozcas los conceptos básicos de funciones, variables, clases y errores, este libro es para ti. Algo de experiencia con JavaScript, incluido un conocimiento básico del Modelo de Objetos del Documento (DOM) y de la red, te ayudará a lo largo del camino; aunque no profundizamos en estos conceptos, son un manantial de excelentes ejemplos, y si no estás familiarizado con ellos los ejemplos podrían no tener tanto sentido.

Independientemente de los lenguajes de programación que hayas utilizado en el pasado, lo que nos une a todos es nuestra experiencia compartida de localizar excepciones, rastreando el código línea a línea para averiguar qué ha ido mal y cómo podemos solucionarlo. Esta es la experiencia que TypeScript ayuda a evitar examinando tu código automáticamente y señalando los errores que puedes haber pasado por alto.

No pasa nada si no has trabajado antes con un lenguaje tipado estáticamente. Te enseñaré qué son los tipos y cómo utilizarlos eficazmente para que tus programas fallen menos, documentes mejor tu código y amplíes tus aplicaciones a más usuarios, ingenieros y servidores. Intentaré evitar las grandes palabras siempre que pueda, y explicaré las ideas de forma intuitiva, fácil de recordar y práctica, utilizando muchos ejemplos para ayudar a que las cosas sean concretas.

Eso es lo que pasa con TypeScript: a diferencia de muchos otros lenguajes tipados, TypeScript es intensamente práctico. Inventa conceptos completamente nuevos para que puedas hablar de forma más concisa y precisa, permitiéndote escribir aplicaciones de forma divertida, moderna y segura.

Cómo está organizado este libro

Este libro tiene dos objetivos: proporcionarte una comprensión profunda de cómo funciona el lenguaje TypeScript (teoría) y ofrecerte montones de consejos pragmáticos sobre cómo escribir código TypeScript de producción (práctica).

Dado que TypeScript es un lenguaje tan práctico, la teoría se convierte rápidamente en práctica, y la mayor parte de este libro acaba siendo una mezcla de ambas, con el primer par de capítulos casi enteramente teóricos y los últimos casi completamente prácticos.

Empezaré con lo básico sobre qué son los compiladores, los verificadores de tipos y los tipos. A continuación, daré una visión general de los distintos tipos y operadores de tipos de TypeScript, para qué sirven y cómo se utilizan. Utilizando lo que hemos aprendido, trataré algunos temas avanzados como las características más sofisticadas del sistema de tipos de TypeScript, el tratamiento de errores y la programación asíncrona. Por último, terminaré con cómo utilizar TypeScript con tus frameworks favoritos (frontend y backend), migrando tu proyecto JavaScript existente a TypeScript, y ejecutando tu aplicación TypeScript en producción.

La mayoría de los capítulos incluyen una serie de ejercicios al final. Intenta hacerlos tú mismo: te darán una intuición más profunda de lo que tratamos de lo que te daría la mera lectura. Las respuestas a los ejercicios de los capítulos están disponibles en Internet, en https://github.com/bcherny/programming-typescript-answers.

Estilo

A lo largo de este libro, he intentado ceñirme a un único estilo de código. Algunos aspectos de este estilo son profundamente personales, por ejemplo:

  • Sólo utilizo el punto y coma cuando es necesario.

  • Hago la indentación con dos espacios.

  • Utilizo nombres de variables cortos como a, f, o _ cuando el programa es un fragmento rápido, o cuando la estructura del programa es más importante que los detalles.

Sin embargo, algunos aspectos del estilo de código son cosas que creo que tú también deberías hacer. Algunas de ellas son

  • Debes utilizar la sintaxis y las funciones más recientes de JavaScript (la última versión de JavaScript suele llamarse simplemente "esnext"). Esto mantendrá tu código en línea con los últimos estándares, mejorando la interoperabilidad y la capacidad de Google, y puede ayudar a reducir el tiempo de adaptación para las nuevas contrataciones. También te permite aprovechar las potentes y modernas funciones de JavaScript, como las funciones de flecha, las promesas y los generadores.

  • Debes mantener tus estructuras de datos inmutables con spreads (...) la mayor parte del tiempo.1

  • Debes asegurarte de que todo tenga un tipo, inferido cuando sea posible. Procura no abusar de los tipos explícitos; esto ayudará a que tu código sea claro y conciso, y mejorará la seguridad al hacer aflorar los tipos incorrectos en lugar de taparlos.

  • Debes mantener tu código reutilizable y genérico. El polimorfismo (ver "Polimorfismo") es tu mejor amigo.

Por supuesto, estas ideas no son nuevas. Pero TypeScript funciona especialmente bien cuando te ciñes a ellas. El compilador downlevel integrado de TypeScript, el soporte para tipos de sólo lectura, la potente inferencia de tipos, el profundo soporte para el polimorfismo y el sistema de tipos completamente estructural fomentan un buen estilo de codificación, mientras que el lenguaje sigue siendo increíblemente expresivo y fiel al JavaScript subyacente.

Un par de notas más antes de empezar.

JavaScript no expone punteros y referencias, sino que tiene tipos de valor y referencia. Los valores son inmutables e incluyen cosas como cadenas, números y booleanos, mientras que las referencias apuntan a estructuras de datos a menudo mutables como matrices, objetos y funciones. Cuando utilizo la palabra "valor" en este libro, suelo utilizarla en sentido amplio para referirme a un valor JavaScript o a una referencia.

Por último, es posible que te encuentres escribiendo código TypeScript menos que ideal en la naturaleza al interoperar con JavaScript, o bibliotecas de terceros tipadas incorrectamente, o código heredado, o si tienes prisa. Este libro presenta en gran medida cómo deberías escribir TypeScript, y argumenta por qué deberías esforzarte por no hacer concesiones. Pero en la práctica, lo correcto que sea tu código depende de ti y de tu equipo.

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, variables de entorno, sentencias y palabras clave.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

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://github.com/bcherny/programming-typescript-answers.

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 un CD-ROM de 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 no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Programando TypeScript por Boris Cherny (O'Reilly). Copyright 2019 Boris Cherny, 978-1-492-03765-1".

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 casi 40 años, O'Reilly Media ha proporcionado formación, conocimientos y perspectivas sobre tecnología y negocios 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, conferencias 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:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

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

Para hacer comentarios o preguntas técnicas sobre este libro, envía un correo electrónico a

Para más información sobre nuestros libros, cursos, conferencias y noticias, consulta nuestro sitio web en http://www.oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

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

Agradecimientos

Este libro es el producto de años de retazos y garabatos, seguidos de un año de madrugones y noches y fines de semana y vacaciones dedicados a escribir.

Gracias a O'Reilly por la oportunidad de trabajar en este libro, y a mi editora Angela Rufino por el apoyo durante todo el proceso. Gracias a Nick Nance por su contribución en " Typesafe APIs", y a Shyam Seshadri por su contribución en "Angular". Gracias a mis editores técnicos: Daniel Rosenwasser del equipo de TypeScript, que dedicó una cantidad de tiempo irrazonable a leer este manuscrito y guiarme a través de los matices del sistema de tipos de TypeScript, y Jonathan Creamer, Yakov Fain y Paul Buying, y Rachel Head por sus ediciones técnicas y comentarios. Gracias a mi familia -Liza e Ilya, Vadim, Roza y Alik, Faina y Yosif- por animarme a seguir adelante con este proyecto.

Sobre todo, gracias a mi compañera Sara Gilford, que me apoyó durante todo el proceso de escritura, incluso cuando eso significaba cancelar planes de fin de semana, trasnochar escribiendo y codificando, y demasiadas conversaciones sin avisar sobre los entresijos de los sistemas tipográficos. No podría haberlo hecho sin ti, y te estaré eternamente agradecida por tu apoyo.

1 Si no vienes de JavaScript, aquí tienes un ejemplo: si tienes un objeto o, y quieres añadirle una propiedad k con el valor 3, puedes mutar o directamente-o.k = 3-o puedes aplicar tu cambio a o, creando un nuevo objeto como resultado-let p = {...o, k: 3}.

Get Programación 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.