~/ 👨‍💻 uncodigo.com _


📘 TypeScript

Por qué TypeScript mejora tu código JavaScript desde el día uno

Felipe 4 min de lectura
TypeScript no es "poner tipos": es diseñar mejor tu código. Aprende qué problemas reales resuelve, cómo evitar el temido any y cómo empezar sin sufrir.

TypeScript no es “escribir más”: es equivocarte menos

Si programaste un tiempo con JavaScript, seguro viviste este momento:

  • todo compila ✅
  • todo “parece” correcto ✅
  • haces deploy 😎
  • algo explota en producción 💥

La causa casi siempre es la misma: un contrato roto.

JavaScript es flexible (y eso es maravilloso), pero esa flexibilidad también permite que casi cualquier cosa llegue a casi cualquier lugar. TypeScript entra como un amigo pesado, pero útil: te frena antes de que te dispares al pie.

El problema real: JavaScript no hace cumplir contratos

Imagina un cálculo simple:

function total(price, tax) {
  return price + tax;
}

total(100, "19"); // "10019" 😬

No hay error de runtime. No hay excepción. JavaScript hizo su trabajo: sumó según sus reglas.

Y ahí está el problema: el bug no es técnico, es de intención. Tu intención era sumar números. JavaScript aceptó un string sin reclamar.

Con TypeScript, ese contrato se vuelve explícito:

function total(price: number, tax: number): number {
  return price + tax;
}

total(100, "19"); // ❌ Error de tipos antes de ejecutar

Esto es TypeScript desde el día uno: errores detectados antes de llegar a producción.

TypeScript no solo detecta errores: te ayuda a diseñar

Cuando una base de código crece, TypeScript deja de ser un “detector de errores” y se transforma en una herramienta de diseño.

Diseñar es tomar decisiones explícitas

Un ejemplo típico: estados de una UI o de un proceso.

En JavaScript:

const status = "loading"; // o "success", o "error", o cualquier cosa

En TypeScript:

type Status = "idle" | "loading" | "success" | "error";

const status: Status = "loading";

Esto te entrega:

  • autocompletado real
  • menos strings mágicos
  • control explícito del flujo

Y además te obliga a pensar: ¿qué estados existen realmente?

“Pero yo puedo ser cuidadoso sin TypeScript…”

Sí, puedes. Y también puedes manejar sin cinturón… hasta que algo pasa.

TypeScript no reemplaza buenas prácticas: las refuerza.

  • si tienes buen naming, TS lo potencia
  • si haces refactors seguido, TS te da confianza
  • si trabajas en equipo, TS reduce fricción y malentendidos

El súper poder oculto: refactor sin miedo

Este es el punto donde muchos no vuelven atrás.

type User = {
  id: number;
  email: string;
};

function sendEmail(user: User) {
  // ...
}

Si mañana cambias email por primaryEmail, TypeScript te marca todos los lugares que quedaron inconsistentes.

En proyectos reales, esto ahorra horas y evita bugs silenciosos.

TypeScript no evita todos los bugs (y eso está bien)

TypeScript no sabe si tu lógica es correcta. Lo que sí hace es eliminar una categoría completa de errores:

  • tipos incorrectos
  • propiedades inexistentes
  • retornos inconsistentes
  • undefined colándose donde no debe

Y eso ya es muchísimo.

El punto más peligroso: datos externos

APIs, bases de datos, localStorage… Nada de eso respeta tus tipos por defecto.

type User = {
  id: number;
  email: string;
};

async function fetchUser(): Promise<User> {
  const res = await fetch("/api/user");
  return res.json(); // ⚠️ peligro silencioso
}

Esto compila, pero no valida nada.

Regla de oro: tipar no es validar

Una forma segura de proteger tu dominio es validar explícitamente:

function isUser(value: unknown): value is User {
  if (typeof value !== "object" || value === null) return false;

  const u = value as Record<string, unknown>;
  return typeof u.id === "number" && typeof u.email === "string";
}

El villano más común: any

Cuando TypeScript “no sirve”, casi siempre es por any.

let value: any = "hola";
value.toFixed(2); // compila, pero rompe en runtime

any le dice al compilador: “no me ayudes”.

Prefiere unknown cuando no sabes qué llega:

let value: unknown = "hola";

if (typeof value === "number") {
  value.toFixed(2); // seguro
}

Cómo empezar con TypeScript sin sufrir

No migres todo de golpe.

  1. Agrega TypeScript con configuración básica
  2. Tipa primero los bordes (APIs, inputs, outputs)
  3. Define tipos simples y evoluciona con el tiempo

TypeScript se disfruta cuando se introduce con criterio, no a la fuerza.

En definitiva TypeScript vale la pena

TypeScript no es una moda ni una obligación. Es una inversión en:

  • mantenibilidad
  • refactors seguros
  • colaboración en equipo
  • menos bugs en producción

Y lo mejor: se siente útil desde el primer día.

Si estás dudando, pruébalo en un proyecto pequeño. Una vez lo sientes, no hay vuelta atrás 😉

#typescript #javascript #tipos #buenas practicas #refactor #tsconfig #strict