• compartir en linkedin

6 razones para usar Typescript

TypeScript es un lenguaje de programación desarrollado por Microsoft, creado para ser un superconjunto de Javascript, lo que significa que cualquier código válido en Javascript es un código válido en Typescript, sin embargo, Typescript extiende la sintaxis de Javascript añadiendo un sistema de tipos estáticos y otros objetos muy interesantes.

Personalmente vengo utilizando Typescript desde hace poco, pero el haber tenido experiencia en el desarrollo con Javascript me hicieron comprender rápidamente sus beneficios y quisiera compartirlos, en este artículo te mencionaré algunas características y las razones por el que deberías usarlo.

1. Menos problemas de compatibilidad

TypeScript se compila en código JavaScript y te permite elegir una versión de salida ya sea ES3, ES5 o ES6. Cada una de estas versiones tiene diferentes niveles de compatibilidad con los motores JavaScript disponibles, pero TypeScript nos libera de la preocupación de cuales características podemos utilizar ya que aquellas funciones que están disponibles en el ES6 podemos compilarlas a la versión ES3 y por ende funcionará en navegadores antiguos.

Esto ayuda a que los equipos sean más productivos ya que pueden usar la función que necesite, sin tener que preocuparse por su compatibilidad con los motores JavaScript existentes.

2. Descubra problemas antes

JavaScript es un lenguaje de programación dinámico,  lo que permite cambiar el tipo de una variable después de haberla declarado. Por ejemplo, podemos declarar una variable, asignarle un valor numérico y luego asignarle una cadena más adelante:

let n = 5;
n = "abc";

Por otro lado, TypeScript es un lenguaje de programación de tipado estático y generará una excepción de compilación si intenta cambiar el tipo de una variable después de que fue asignada. El sistema de tipos de TypeScript incluye una función conocida como inferencia de tipos, que se utiliza para detectar automáticamente los tipos de variables en su aplicación. La inferencia de tipos le permite escribir exactamente el mismo JavaScript y obtener resultados muy diferentes:

let n = 5;
n = "abc"; // Type 'string' is not assignable to type 'number'.

El uso de tipos incorrectos puede provocar un comportamiento inesperado. Por ejemplo, puede esperar que la siguiente función devuelva la suma de dos números:

function sum(a, b) {
   return a + b;
}

Sin embargo, si usa una cadena y un número (en lugar de dos números), encontrará un resultado inesperado:

sum("5", 5); // "55" 

El sistema de inferencia de tipos de TypeScript analizará la función anterior para intentar determinar el tipo correcto de todas las variables. Desafortunadamente, no podrá detectar los tipos de argumentos de la función y el tipo ‘any’ será asignado a todos los argumentos de la función. ‘Any’ se usa para representar todos los tipos posibles:

function sum(a: any, b: any) {
   return a + b;
}

Puede usar una sintaxis conocida como anotaciones de tipo opcional y la opción de compilación ‘noImplicitAny’ para asegurarse de que los argumentos de su función usen el tipo correcto:

function sum(a: number, b: number) {
   return a + b;
}

Una vez que haya proporcionado a TypeScript la anotación requerida, el compilador de TypeScript podrá evitar muchos problemas potenciales de tiempo de ejecución asegurándose de que haya utilizado los tipos correctos:

// Error: Argument of type 'string' is not assignable to parameter of type 'number'

sum("5", 5);

El sistema de tipos TypeScript es muy potente e incluye funciones como interfaces o tipos genéricos. Estas características son bastante comunes en otros lenguajes de programación de tipo estático como Java o C#.

Sin embargo, TypeScript también admite otras características avanzadas del sistema de tipos, como los tipos de datos algebraicos, que son comunes en los lenguajes de programación funcional de tipo estático.

Por ejemplo, un tipo de datos algebraicos común en los lenguajes de programación funcional es el tipo Maybe (Quizás).

El tipo Maybe podría implementarse en TypeScript 2.0 de la siguiente manera:

type Maybe<T> = undefined | T;

El tipo Maybe es la unión entre el tipo indefinido (utilizado para representar la inexistencia de un valor) y el tipo del valor en sí (T):

interface User {    
   name: string; 
} 

let maybeUserArray: Maybe<User[]> = fetchUsersFromServer(); 

// Error: Object is possibly 'undefined' 

let userNames: string[] = maybeUserArray.map((user) => user.name);

El uso de algunos de los principios de programación funcional en combinación con tipos de datos algebraicos, como el tipo Maybe, mejorará la predictibilidad y la capacidad de prueba de su código fuente.

3. Producir código que sea más fácil de entender y refactorizar

Las anotaciones de tipo pueden proporcionar más valor que la prevención de errores en tiempo de ejecución. Se pueden considerar como una especie de documentación de código fuente que puede ayudarnos a comprender cómo se comporta una determinada pieza de código.

Las anotaciones de tipo son extremadamente beneficiosas cuando se trabaja con grandes bases de código o dentro de grandes equipos de desarrollo. Estas anotaciones también pueden ser utilizadas por herramientas de desarrollo para potenciar las funciones de refactorización, lo que permitirá a sus equipos de desarrollo de software mejorar continuamente las bases de código existentes.

4. Escale el equipo de desarrollo de software más fácilmente

El sistema de tipos TypeScript es fácil de entender para los desarrolladores de backend con experiencia en lenguajes de programación como Java o C #, mientras que los desarrolladores de JavaScript frontend pueden encontrar el sistema de tipos un poco más difícil. Sin embargo, un desarrollador frontend también debería poder aprender TypeScript rápidamente porque todo lo que saben sobre JavaScript sigue siendo válido en TypeScript.

TypeScript también puede ayudar a una organización a eliminar algunas de las diferencias entre sus desarrolladores frontend y backend, acercándolos con el movimiento de los ingenieros de software entre equipos.

Además, si elige usar Node.js para un backend, podrá compartir código TypeScript entre sus equipos de frontend y backend. Hoy en día es posible desarrollar y compartir código TypeScript entre aplicaciones web, aplicaciones de backend, aplicaciones de escritorio, aplicaciones móviles etc.

El sistema de tipos TypeScript presenta interfaces. Las interfaces también se conocen como “contratos” porque se pueden utilizar para garantizar que dos piezas de software respeten un conjunto de reglas determinado. Las interfaces son una herramienta extremadamente importante cuando se trata de colaboración entre equipos de desarrollo de software.

En TypeScript, puede definir un contrato (una interfaz) entre dos equipos para que puedan trabajar de forma independiente. Si un equipo no se adhiere a las reglas del contrato, TypeScript arrojará un error de compilación. Las interfaces hacen de TypeScript una opción mucho mejor que JavaScript en términos de colaboración.

5. Adopte el ecosistema de JavaScript

JavaScript es el lenguaje de programación más utilizado en el mundo en la actualidad y tiene más módulos de código abierto disponibles que cualquier otro lenguaje de programación .

Para consumir un módulo JavaScript de TypeScript, debe definir la interfaz pública del módulo JavaScript en una especie de archivo TypeScript conocido como definiciones de tipo. Muchas veces ni siquiera necesita preocuparse por esto, ya que hay miles de archivos de definición de tipo disponibles en línea como código abierto. Esto hace que TypeScript sea efectivamente compatible con todas las bibliotecas de JavaScript existentes.

Además, puede aprovechar la mayor comunidad de ingenieros de software del mundo, una lista interminable de herramientas de desarrollo y recursos de aprendizaje casi ilimitados disponibles de forma gratuita.

JavaScript y TypeScript son preposiciones de valor extremadamente atractivas para cualquier organización de software porque se ha demostrado que el uso de código abierto es una estrategia exitosa para reducir el costo del desarrollo de software. Más módulos de código abierto disponibles significa que su organización necesitará producir menos código.

6. TypeScript tiene un futuro brillante

TypeScript fue desarrollado por Microsoft y fue anunciado originalmente por Anders Hejlsberg (la mente detrás de Turbo Pascal, Delphi y C #) en octubre de 2012.

TypeScript ha sido un proyecto de código abierto desde el principio y puede considerarse un indicador temprano de la revolución del código abierto que estaba a punto de transformar Microsoft .

Después de su lanzamiento inicial, TypeScript ganó algo de tracción entre los desarrolladores de .Net, pero no fue hasta dos años y medio más tarde, cuando el equipo de TypeScript anunció su asociación con Google en el desarrollo de Angular 2.0, que comenzó para convertirse en una tecnología convencional. Un año después de este anuncio, Microsoft se convirtió en la empresa con más contribuyentes de código abierto en GitHub, y TypeScript experimentó un crecimiento de 3.5x en GitHub .

¿Cómo puede obtener más información sobre TypeScript?

La forma más fácil de comenzar con TypeScript es visitando su sitio web oficial en www.typescriptlang.org . El sitio web hace referencia a muchos recursos y un editor de texto interactivo, que le permite probar TypeScript en su navegador.Hay muchos otros recursos de aprendizaje en línea disponibles gratuitamente. Entre estos, debemos destacar TypeScript Deep Dive , un libro de código abierto escrito por Basarat Ali, quien puede ser considerado como el líder de la comunidad de TypeScript de código abierto.