¿Qué es TypeScript y para qué sirve?

Descubre qué es TypeScript para aprender a programar en él y convertirte en un desarrollador muy solicitado
Contamos qué es TypeScript, cómo se diferencia de JavaScript y cómo el conocimiento de TypeScript afecta el empleo de los desarrolladores.
¿Qué es TypeScript?
TypeScript es un lenguaje de programación de tipado estricto basado en JavaScript. Los desarrolladores le han agregado características adicionales, como tipado estático, clases y módulos, para crear programas más confiables y mantenibles.

TypeScript permite detectar errores en tiempo de desarrollo, facilita el trabajo en equipo y mejora la productividad en proyectos grandes. Se compila a JavaScript estándar, por lo que el código escrito en TypeScript puede ejecutarse en cualquier navegador moderno o entorno que admita JavaScript.

El código en TypeScript se ve así, por ejemplo:

type User = {
  firstName: string;
  lastName: string;
};

const formatFullName = ({ firstName, lastName }: User) => {
  return `${firstName} ${lastName}`;
};

formatFullName({ firstName: 'John', lastName: 'Doe' });

Muchos desarrolladores dicen que TypeScript es un superset de JavaScript. Pero en realidad, TypeScript es más una superposición de JavaScript que un superset.

En la página principal de la documentación de TypeScript, hay una frase bastante honesta que describe la esencia y la relación con JavaScript:

"TypeScript is JavaScript with syntax for types" → "TypeScript es JavaScript con sintaxis para tipos"
Los tipos son conjuntos de diferentes valores. En TypeScript, los tipos se utilizan para definir y describir los datos que se pueden utilizar en un programa. Los tipos ayudan a especificar qué valores pueden tener variables, funciones u objetos específicos y qué operaciones se pueden realizar con esos valores.

Por ejemplo, si tenemos una variable age, podemos especificar su tipo como number para limitarla solo a valores numéricos. Esto nos permite evitar errores, como intentar asignar un valor de cadena a la variable age.

Los tipos en TypeScript también permiten definir tipos de datos personalizados, creando interfaces o tipos de objetos que describen la estructura y las propiedades de los objetos.

Los autores de TypeScript no tienen como objetivo construir un sistema de tipos confiable, como escriben en los "Objetivos de diseño de TypeScript". En cambio, los desarrolladores construyen un sistema de tipos que permite tipificar cualquier código de JavaScript "adecuado". En otras palabras, el código de JavaScript de "temperatura media en el hospital" se puede tipificar de manera bastante conveniente.
¿Cuál es la diferencia entre TypeScript y JavaScript?
Un ex programador de Java sentirá un alivio increíble al usar TypeScript: finalmente puede protegerse de la incertidumbre de JavaScript. Pero un novato que ayer mismo escribía una calculadora en la consola se horrorizará al ver cómo se complica el código: solo hay siete formas de crear un tipo en TypeScript, según la documentación. Veamos algunas diferencias más entre estos lenguajes.
Tipado

A diferencia de JavaScript, TypeScript tiene un tipado estricto y estático. Esto significa que las variables, los parámetros de las funciones y otros elementos del código deben declararse con un tipo de datos. El tipado estático permite detectar errores en tiempo de desarrollo y hace que el código sea más confiable.
Compilación

TypeScript requiere una etapa de tiempo de compilación. En esta etapa, el código fuente en TypeScript se compila a JavaScript estándar y también se verifican los tipos de datos.

El JavaScript resultante de la compilación se ejecuta directamente en el navegador o en el servidor.
Características adicionales

TypeScript agrega funciones adicionales que no están presentes en JavaScript. Por ejemplo, TypeScript admite enumeraciones (enum), interfaces y modificadores de acceso. Esto permite a los desarrolladores escribir código más estructurado y modular.

enum ShapeType {
  Circle = 'circle',
  Rectangle = 'rectangle',
  Triangle = 'triangle',
}

abstract class Shape {
  abstract type: ShapeType;
  abstract calculateArea(): number;
}

class Circle extends Shape {
  type = ShapeType.Circle;
  radius: number;

  constructor(radius: number) {
    super();
    this.radius = radius;
  }

  calculateArea(): number {
    return Math.PI * this.radius ** 2;
  }
}


const _ShapeType = {
  Circle: "Circle",
  Rectangle: "Rectangle",
  Triangle: "Triangle",
};

class _Shape {
  calculateArea() {
    throw new Error("Method calculateArea() must be implemented.");
  }
}

class _Circle extends _Shape {
  constructor(radius) {
    super();
    this.type = ShapeType.Circle; // aquí podemos especificar cualquier string
    this.radius = radius;
  }

  calculateArea() {
    return Math.PI * Math.pow(this.radius, 2);
  }
}

En general, ambos lenguajes son ampliamente utilizados por los desarrolladores web, pero TypeScript ofrece más herramientas para el desarrollo de proyectos donde la confiabilidad y la escalabilidad del código son importantes. JavaScript sigue siendo más simple y flexible para crear aplicaciones web dinámicas.
También te puede interesar:

Dónde se utiliza TypeScript y en qué casos
TypeScript funciona en cualquier lugar donde funcione JavaScript y está disponible para todos sus frameworks, lo que facilita su uso. TypeScript es compatible con muchas bibliotecas, lo que reduce la barrera de entrada para trabajar con ellas para los principiantes.

En el segmento empresarial, TypeScript se utiliza para escribir y mantener la mayoría de las aplicaciones que utilizamos en el navegador.

Los desarrolladores suelen utilizar las herramientas avanzadas de TypeScript en proyectos grandes. Por ejemplo, la generación de tipos y la ampliación de la biblioteca estándar (type-fest). Sin embargo, para interacciones simples en el navegador, pequeñas páginas interactivas y utilidades de consola, TypeScript es menos adecuado que JavaScript, que es más simple y flexible de usar.

Además, uno de los frameworks de JavaScript más grandes, Angular, desarrollado por Google, utiliza TypeScript de forma nativa. Por cierto, la mayoría de los frameworks (React, Vue, Svelte, Solid) también están listos para usar con TypeScript.

TypeScript se utiliza no solo en el desarrollo frontend, sino también en el backend. El backend en TypeScript maneja las solicitudes del cliente, interactúa con la base de datos, procesa datos, realiza autenticación y otras funcionalidades necesarias para el funcionamiento de la aplicación. Realiza cálculos, procesamiento y almacenamiento de datos, y también interactúa con el frontend, proporcionándole la información necesaria. Al desarrollar el backend en TypeScript, se pueden utilizar varios frameworks y herramientas, como Node.js, Express.js, Nest.js y otros.
Ventajas de TypeScript
Aumento de la productividad y mantenibilidad

Gracias al tipado estático y otras características, TypeScript ayuda a mejorar la productividad de los desarrolladores. Proporciona autocompletado de código, verificaciones estáticas de tipos, documentación integrada y otras funciones que facilitan el desarrollo y el mantenimiento del código.
Sistema de tipos poderoso

Como mencionamos anteriormente, los tipos son conjuntos de diferentes valores. Y el sistema de tipos es un conjunto de tipos y un conjunto de operaciones sobre ellos. Cuando tenemos un sistema de tipos poderoso, tenemos muchas formas de controlar y cambiar esos tipos sobre la marcha, lo que crea un código confiable y predecible.
Conjunto de herramientas ampliado

TypeScript admite clases, interfaces, herencia, polimorfismo y otros conceptos de programación orientada a objetos, como enum, niveles de acceso a miembros de clase (private, public, protected). Esto hace que el desarrollo de aplicaciones complejas sea más estructurado y permite crear código reutilizable y extensible.
Desventajas de TypeScript
Sobrecarga de código

TypeScript requiere agregar tipos y anotaciones al código JavaScript existente. Esto puede llevar mucho tiempo y esfuerzo al convertir un proyecto de JavaScript a TypeScript, y también puede afectar ligeramente el rendimiento y aumentar el tamaño de los archivos.
Complejidad de los tipos

Los tipos son una ventaja y una desventaja en TypeScript. Como mencionamos anteriormente, el sistema de tipos permite controlar y cambiar los tipos. Pero a menudo se produce un uso incorrecto. Esto puede resultar en construcciones de código confusas en el código empresarial, lo que dificulta la comprensión del lenguaje.
Ecosistema limitado

Es posible que no encuentres bibliotecas o complementos con soporte para TypeScript para algunos frameworks o bibliotecas de JavaScript menos populares. A pesar del ecosistema de TypeScript en constante desarrollo, algunas herramientas pueden no estar disponibles o tener soporte limitado.
¿Es difícil aprender TypeScript?
Recuerda el meme del iceberg, donde la mayor parte está debajo del agua. Si hacemos una analogía con TypeScript, aprender la "parte superior del iceberg", comprender los conceptos del lenguaje, no es difícil en absoluto. Especialmente si has estudiado otros lenguajes de tipado estricto como Java, C/C++, C#. Puedes aprender las construcciones básicas de TypeScript en una noche y escribir tus primeros tipos o enviar una solicitud de extracción en una semana.
Es mucho más difícil aprender a escribir correctamente en TypeScript, a tipificar correctamente el código: llevará meses aprenderlo. TypeScript tiene una sintaxis compleja y requiere que los desarrolladores aprendan conceptos lingüísticos que no existen en JavaScript. Pero esto también es posible: lo principal es practicar constantemente y dedicarle mucho tiempo.
¿Cuánto ganan los especialistas en TypeScript y cómo afecta el conocimiento del lenguaje al empleo?
TypeScript está ganando cada vez más popularidad en la comunidad de desarrolladores. Según los resultados del informe State of Octoverse 2022, TypeScript se encuentra entre los cinco lenguajes de programación más populares. TypeScript supera en popularidad a PHP, C#, C++ y otros lenguajes demandados, quedando solo por detrás de Java, JavaScript y Python. El conocimiento y la experiencia en TypeScript pueden hacer que seas más competitivo en el mercado laboral y abrirte puertas a nuevas oportunidades y proyectos.

En las condiciones actuales, es muy probable que debas aprender TypeScript, ya que esto es requerido por muchos empleadores. Además, según las ofertas de trabajo en indeed.com, los desarrolladores que saben TypeScript ganan más que aquellos que no trabajan con este lenguaje.

Según la misma información de las ofertas de trabajo en indeed.com, los desarrolladores juniores de TypeScript pueden ganar entre 15 y 25 mil pesos mexicanos. Los desarrolladores intermedios pueden ganar entre 25 y 35 mil pesos mexicanos. Los desarrolladores senior pueden aspirar a salarios de 35 a 60 mil pesos mexicanos.
"En mi empresa, les pregunto a todos los desarrolladores sobre su conocimiento de TypeScript desde el principio. Para nosotros, al igual que para muchas otras organizaciones, este conocimiento es actualmente un requisito predeterminado. Así es como se está desarrollando la industria: la mayoría de las empresas utilizan TypeScript en el desarrollo de sus proyectos, por lo que el conocimiento del lenguaje es una gran ventaja para los empleadores.

Dependiendo del nivel del especialista, a menudo a los empleadores les interesa cuánto se ha sumergido en el lenguaje. Por ejemplo, a los juniors les pregunto cosas básicas sobre TypeScript, como el sistema de tipos, sus intersecciones, uniones y tipificación estructural. A los intermedios y seniors les pregunto sobre genéricos y les propongo diseñar algún sistema basado en tipos".
Cómo instalar TypeScript
Puedes usar TypeScript con dos herramientas: tsc y ts-node. El primero compila el código a JavaScript, y el segundo ejecuta el código directamente.

Para instalar TypeScript, debes instalar Node.js y npm.
  • Instalación de tsc:
npm install -g typescript
  • Instalación de ts-node:
npm install -g ts-node
Qué más aprender sobre TypeScript
Para comenzar a comprender TypeScript, te recomendamos que consultes los siguientes recursos:

Cursos: el primero es adecuado para principiantes y el último es para usuarios más avanzados:
No olvides practicar y escribir código en TypeScript. Puedes comenzar con proyectos pequeños, como crear una aplicación web simple o un programa de consola, y luego pasar a proyectos más complejos.
Leer otros artículos de Blog
Lee otros artículos relevantes del mundo de la tecnología y el espíritu empresarial.