Por qué debería (probablemente) utilizar Typescript
Dominik Grzedzielski
Senior Software Engineer
Todos los usuarios del ecosistema JavaScript conocen hoy en día Typescript. Typescript es una de las tecnologías más apreciadas* y su uso no deja de aumentar (la cuota de uso ha pasado de 52% en 2018 a 78% en 2020)*.
La posición actual de Typescript no surgió de la nada, ya que esa tecnología es capaz de mejorar realmente nuestra experiencia como desarrolladores. Una codificación más explícita aumenta el control y la previsibilidad de código. En este artículo, intentaré convencerte de que utilices Typescript.
Normalmente, cuando se desarrolla una aplicación en JavaScriptsu flujo podría se ven así:
Haz un cambio,
Vaya a la aplicación y compruebe la parte modificada / Ejecutar pruebas (relacionadas).
Averigua si todo va bien.
Con Typescript, usted puede realmente hacer el cambio y si hay alguna error de tipo en su código, lo sabrá inmediatamente gracias al mensaje de error del compilador o a la información en tiempo real del IDE. Por supuesto, el compilador de Typescript no resolverá todos los problemas ni advertirá de todos los errores, pero su ayuda puede ser inestimable.
Mejora de la sintaxis en los IDE
Es muy sencillo. Si está utilizando buenos IDEs, como WebStorm o VSCode, obtendrá mejor completado de sintaxis con Typescript. Tal vez no suene como una gran mejora de la experiencia del desarrollador, pero a la larga cada mejora es importante, ya que podría ahorrarnos algo de tiempo y, de nuevo, evitar un error tipográfico. Además, podemos definir nuestro tipo o interfaz una vez; como no tenemos que recordar siempre la estructura, podemos centrarnos en escribir la lógica de negocio.
Refactorización menos dolorosa
Imagina que tienes que refactorizar por cualquier motivo, por ejemplo, te has unido a un proyecto y recibe la tarea de añadir una nueva función, pero esa función está conectada de algún modo con código heredado. Typescript puede hacerlo más fácil y menos doloroso porque cuando haces un cambio y hay otro lugar donde tienes que hacer otro cambio, el compilador te avisará de ello.
Por ejemplo - podría ser una firma de función cambiada o tal vez después del cambio, un devolverá algo totalmente diferente, por lo que también diferirá el tipo devuelto.
Más confianza en el código base
JavaScript es de tipado débil y dinámico, por lo que al inicializar una variable con el valor let query = '' más adelante en el código, el desarrollador puede hacer algo irracional por error, por ejemplo consulta = truey será un código JS válido.
En un código bien escrito, asignar un valor booleano a una variable que antes era una cadena no debería ocurrir. Así que, normalmente, esa asignación con cambio de tipo es el resultado de un error.
Cuando usamos Typescript, no podemos cambiar el tipo de la variable, así que si hacemos que la variable let query = '' variable, será cadena y no podremos cambiar su tipo por error.
Si queremos que una variable sea de más de un tipo, siempre lo hacemos explícitamente utilizando union type, por ejemplo cadena | número.
Por lo tanto, Typescript hace que nuestro código sea más predecible y explícito. Además, Typescript se ocupará de la explicitud en el análisis del flujo de control y, si existe la posibilidad de que algo vaya mal, te avisará.
Aquí en ejemplo en primer si obtendremos un error:
TS2339: La propiedad "battery" no existe en el tipo "ClothingProduct". 2 veces, para bateríay ram propiedades.
En el segundo bloque - si noobtendremos ese error para talla propiedad. Por supuesto, es sólo un ejemplo para mostrar cómo sindicatos discriminados y análisis del flujo de control funcionan en Typescript, por lo que no estamos haciendo nada demasiado complejo con ese código.
Migración fácil y progresiva desde JavaScript
El código JavaScript válido es al mismo tiempo código Typescript válido, por lo que puedes migrar tu código base paso a paso. Normalmente, usar el modo estricto en Typescript es una buena práctica, pero en este caso, tenemos que empezar con "estricto": false en tsconfig.json y también deberíamos establecer 2 opciones más.
"allowJs": true, // nos permitirá usar ficheros .js y no se comprobará el tipo en ellos
"skipLibCheck": true // omitirá la comprobación de tipos en las librerías que usemos
Con esas opciones, podemos migrar de JS a TS paso a paso - archivo por archivo, simplemente cambiando la extensión de .js(x) a .ts(x) y añadiendo tipos en los archivos. Usando este enfoque, podemos evitar cientos o miles de temibles errores de compilación.
Resumen
Creo que deberíamos utilizar Texto mecanografiado tan a menudo como posibleporque es realmente beneficioso a largo plazo. Ayuda a mantener los proyectos, aumenta la experiencia de los desarrolladores y hace que nuestra base de código sea más explícita y fiable.
Sin embargo, como siempre, hay excepciones - por ejemplo, para una simple página de aterrizaje donde JavaScript sólo se utiliza para cambiar de clase u otro caso simple, Typescript no tiene sentido. Además, tenemos que recordar que para sacar el máximo partido de Typescript, tenemos que aprender a usarlo a un nivel suficiente, y puede llevar algún tiempo. Aun así, creo que es una inversión muy rentable de tu tiempo.