¿Es TypeScript una buena inversión para tu próximo producto digital?

Share:

Desde su primer lanzamiento en 2012, TypeScript ha conquistado el mundo del desarrollo web. En la Encuesta de desarrolladores de desbordamiento de pila de 2021, TypeScript avanzó al séptimo lugar en la lista de los lenguajes de programación más populares (fuente), con un poco más del 30% de todos los desarrolladores diciendo que están familiarizados con él. Eso constituye un aumento de 5 puntos porcentuales con respecto a 2020 (fuente) y más de 20 puntos porcentuales con respecto a 2017 (fuente), cuando TypeScript apareció por primera vez en la lista.

Y no es una sorpresa. En la misma encuesta, TypeScript se clasificó como el tercer lenguaje de programación más querido, solo detrás de Clojure y Rust. El 72% de los desarrolladores dijeron que disfrutan usando TypeScript y quieren continuar, mientras que solo un poco más del 60% dijo lo mismo sobre JavaScript y solo el 40% sobre PHP.

¿Qué es TypeScript?

TypeScript es un lenguaje de programación de código abierto que se basa en JavaScript y admite tipos. Aporta mejores herramientas a los procesos de programación, por lo que se usa ampliamente en todas las etapas del desarrollo de productos digitales.

TypeScript se inventó para el desarrollo de aplicaciones grandes y complejas. Permite a los desarrolladores implementar herramientas y funciones avanzadas en productos digitales nuevos y existentes. Su objetivo también es ayudar a identificar y corregir errores.

En Drago’s House, utilizamos el desarrollo de productos de ciclo completo que divide la construcción de un producto en varias fases. En las primeras fases, creación de prototipos y MVP, JavaScript puro puede ser la elección correcta, pero a medida que el proyecto crece y entra en las fases de ajuste y escalado del mercado de productos, TypeScript se vuelve indispensable.

¿Qué hace realmente TypeScript?

Imagina que estás almacenando mercancía en cajas sencillas sin etiquetar. Estás familiarizado con tu inventario, por lo que siempre recuerdas en qué casilla buscar un artículo específico. Incluso cuando contratas a un asistente, puedes ponerlo rápidamente al día para que pueda usar tu sistema de almacenamiento con facilidad.

Este enfoque puede ser beneficioso en algunas etapas del negocio, ya que no tienes que idear un sistema elaborado de gestión de inventario o etiquetado, ni preocuparte por la logística de actualizar todos esos datos.

Sin embargo, a medida que comienzas a contratar más empleados y expandes tu almacén, hacer un seguimiento del contenido de cada caja y difundir esa información a todos tus empleados se convierte en una carga mucho mayor. TypeScript te brinda la capacidad de etiquetar cada cuadro de una manera familiar y conveniente.

Ejemplos prácticos

Un objeto en JavaScript es un poco como una caja con ranuras con nombres dentro excepto que, a diferencia de una caja física, contiene información.

Así es como definiría un objeto en JavaScript simple:

manufacturer: 'Ford', 
model: 'Explorer', 
color: 'black', 
year: 2019 
} 
console.log(car.manufacturer); // prints: 
Ford 
console.log(car.model); // prints: Explorer

Hasta ahora esto está funcionando perfectamente bien. Pero, ¿qué pasaría si invitáramos a un alegre desarrollador británico al equipo?

console.log(car.colour); // prints: undefined

¡UPS! El objeto ‘carro’ no tiene una propiedad de ‘color’, solo tiene una propiedad de ‘color’. En JavaScript, un error como este fallaría silenciosamente. Si logró pasar el proceso de control de calidad, daría como resultado un feo valor “indefinido” en algún lugar de la interfaz de usuario. No es una vista poco común en Internet.

Esta es una falla fundamental subyacente de JavaScript: como un lenguaje escrito de forma imprecisa, por defecto falla silenciosamente y prefiere un valor incorrecto a un error.

TypeScript ofrece una forma de evitar errores como este al permitir que los desarrolladores declaren primero la forma y el contenido de los objetos.

Por ejemplo:

// first, define the shape of the object
 type Car = { 
manufacturer: string, 
model: string, 
color: string, 
year: number 
} 
// then create the object itself 
const car: Car = { 
manufacturer: 'Ford', 
model: 'Explorer', 
color: 'black', 
year: 2019 
}

Ahora bien, si nuestro compañero de equipo británico tratara de introducir su ortografía nativa en el código, TypeScript te advertiría de inmediato:

console.log(car.colour); // Property 'colour' does not exist on type Car. Did you mean 'color'?

Por supuesto, esto no solo ayuda con la lectura de propiedades, o sacar cosas de las cajas, sino que también refuerza la estructura declarada cuando se crean nuevos objetos, cuando las cosas se colocan en cajas.

const car2: Car = { 
manufacturer: 'Honda', 
model: 'Civic', 
color: 'red' 
} // Property 'year' is missing in type '{ manufacturer: string; model: string; 
color: string; }' but required in type 'Car'.

Como te puedes imaginar, esto es solo la punta del iceberg. TypeScript también introduce conceptos como interfaces, clases abstractas, genéricos y muchos más, lo que lleva a JavaScript a un nivel de sofisticación completamente diferente.

¿Cómo se traduce todo eso en aplicaciones comerciales?

Lo malo: el costo y la complejidad de usar TypeScript

Como ocurre con la mayoría de las cosas en la vida, las ventajas de TypeScript no son gratuitas: tienen un costo en forma de trabajo adicional para el desarrollo de mecanografías. Esta mayor carga de trabajo viene en varias capas.

El más básico y obvio es simplemente el trabajo requerido para desarrollar tipos: escribir manualmente la estructura de todos los objetos y funciones. Esto simplemente requiere más pulsaciones de teclas que el código JavaScript simple.

A veces, los datos están estructurados de una manera que es difícil de expresar en TypeScript. Si bien esto puede ser un olor a código, lo que sugiere que la arquitectura o la lógica de la aplicación se han vuelto demasiado complejas, otras veces se debe a las limitaciones de TypeScript. En el contexto del desarrollo de JavaScript, este es un tipo de desafío completamente nuevo.

Los tipeos también introducen un nuevo tipo de error: los errores de tipeo. Si un desarrollador introduce tipos incorrectos en un código base, es posible que otros desarrolladores tarden en detectarlo debido a la seguridad de tipo percibida.

Luego, está el problema de trabajar con bibliotecas de terceros, que no siempre pueden incluir tipeos. En ese caso, el equipo de desarrollo tendría que crear sus propios tipos, lo que puede ser prohibitivamente caro, o aflojar la configuración de TypeScript para permitir el código sin escribir; aunque eso frustraría un poco el propósito de usar TypeScript en primer lugar.

Las bibliotecas también pueden tener tipeos incompletos o incorrectos. ¡Imagínese la frustración si un ladrón con inclinaciones cómicas irrumpiera en su almacén y barajara todas sus etiquetas!

Por último, está el tema de la búsqueda de talento. Cada desarrollador de TypeScript es también un desarrollador de JavaScript, pero no todos los desarrolladores de JavaScript son desarrolladores de TypeScript, por lo tanto, el grupo de talentos disponibles es, por definición, más pequeño para TypeScript.

En general, la introducción de TypeScript en una base de código significa que se necesitará más trabajo para implementar la misma funcionalidad. También agrega nuevos tipos de errores y desafíos y aumenta la complejidad de la gestión de dependencias y el proceso de compilación.

¿Qué beneficios ofrece TypeScript para compensar todos esos gastos generales?

Lo bueno: experiencia del desarrollador, calidad y escala en el uso de TypeScript

Algunos desarrolladores tienden a percibir a TypeScript como una mera herramienta de garantía de calidad, lo que ayuda a minimizar la cantidad de errores que salen del IDE de un desarrollador y llegan al código base. Gracias a la verificación de tipo estático, ciertos errores pueden detectarse y corregirse muy pronto, lo que reduce significativamente el daño total, el costo y la cantidad de deuda técnica.

Como sabrá, la deuda de código causa muchos problemas: baja calidad de código, falta de documentación, diseño poco intuitivo, etc. Esto puede conducir a una menor retención de clientes, brechas dentro de los sistemas de seguridad y otras consecuencias, lo que puede resultar en la falla comercial del producto. . El uso de TypeScript ayuda a minimizar la deuda técnica y a mantener el código documentado.

Uno de los mayores beneficios de TypeScript es la reducción de la sobrecarga mental que proporciona. Puede recordar fácilmente lo que hay dentro de cinco o diez cajas. Pero cien? ¿Mil?

Una frase popular para describir TypeScript es “JavaScript que escala”. Al igual que las empresas, las aplicaciones tienden a crecer en alcance y complejidad. Sin TypeScript, los desarrolladores tienen que mantener gran parte de esa complejidad en sus cabezas, lo cual es difícil y agotador, lo que lleva a una disminución de la productividad y un aumento en la cantidad de errores. El sistema de tipos estáticos de TypeScript no solo analiza el código en busca de errores en tiempo real, sino que también actúa como una forma rudimentaria de documentación integrada directamente en el código.

Esto también tiene el efecto de mejorar la mantenibilidad. TypeScript facilita el salto a un código base después de no trabajar en él durante un período prolongado. La incorporación de nuevos desarrolladores, o incluso la transferencia de un código base completo a un proveedor diferente, es mucho más fácil, económico y menos riesgoso cuando el código base está completamente escrito.

¿Es TypeScript una buena inversión empresarial?

Si bien es algo difícil decidirse por un ROI duro para TypeScript, sus beneficios suaves son extensos y difíciles de exagerar. Es una inversión en el futuro de su base de código y su negocio, y está casi garantizado que pagará dividendos durante toda la vida útil de su aplicación.

En muchos casos, el uso de TypeScript es una pérdida a corto plazo para una ganancia a largo plazo. El retorno de la inversión aparece después de un período de tiempo, y llega mucho más rápido si aplica TypeScript a un proyecto más grande o lo usa como lenguaje de programación principal para llevar a cabo la transformación digital.

TypeScript ayuda a alcanzar los objetivos comerciales a largo plazo y respalda la fase de escalado del desarrollo de software al hacer que las futuras enmiendas al código no solo sean posibles sino también fáciles de administrar. Esto da como resultado costos de desarrollo más bajos, menos problemas con el software para los equipos de desarrollo y más posibilidades de convertir su aplicación digital en un producto verdaderamente excepcional y ampliamente deseado.