Retour aux articles
miércoles, 8 de enero de 202556 vues2

Los 5 errores comunes de los principiantes en TypeScript (y cómo evitarlos)

Mike Codeur

Astuces

TypeScript es una herramienta poderosa que hace que el desarrollo en JavaScript sea más seguro y mantenible gracias a su sistema de tipado estático. Sin embargo, los principiantes suelen caer en errores que pueden complicar su código o anular los beneficios de TypeScript. En este artículo, exploraremos 5 errores comunes y cómo evitarlos con ejemplos concretos.

1. Usar any en Exceso

El Problema:

El uso excesivo de any omite el tipado estático de TypeScript, lo que equivale a programar en JavaScript clásico. Esto puede ocultar errores y dificultar el mantenimiento del código.

Ejemplo de Error:

TSX
function addition(a: any, b: any) {
  return a + b; // Puede producir comportamientos inesperados
}

console.log(addition("1", 2)); // Resultado: "12"

La Solución:

Usa tipos explícitos o genéricos cuando sea necesario.

Ejemplo Corregido:

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

console.log(addition(1, 2)); // Resultado: 3

2. Tipado Incorrecto de Objetos

El Problema:

Muchos principiantes olvidan definir correctamente las estructuras de los objetos o utilizan un tipado demasiado permisivo.

Ejemplo de Error:

TSX
const usuario: object = { nombre: "Alice", edad: 25 };
// Error si intentamos usuario.nombre, ya que TypeScript no reconoce las propiedades del objeto.

La Solución:

Define interfaces o tipos para describir tus objetos con precisión.

Ejemplo Corregido:

TSX
interface Usuario {
  nombre: string;
  edad: number;
}

const usuario: Usuario = { nombre: "Alice", edad: 25 };
console.log(usuario.nombre); // Resultado: "Alice"

3. Sobrecargar los Tipos

El Problema:

Intentar combinar demasiados tipos o agregar restricciones innecesarias puede hacer que el código sea difícil de leer y mantener.

Ejemplo de Error:

TSX
type Cuenta = { id: number; email: string } | { id: number; username: string };

const usuario: Cuenta = { id: 1, email: "[email protected]", username: "test" };
// Error potencial: el tipo no sabe qué propiedad usar.

La Solución:

Simplifica los tipos complejos o utiliza discriminantes para aclarar tus intenciones.

Ejemplo Corregido con un Discriminante:

TSX
type CuentaEmail = { tipo: "email"; id: number; email: string };
type CuentaUsername = { tipo: "username"; id: number; username: string };

type Cuenta = CuentaEmail | CuentaUsername;

const usuario: Cuenta = { tipo: "email", id: 1, email: "[email protected]" };

4. Ignorar las Opciones de Configuración de TypeScript

El Problema:

Muchos principiantes no configuran correctamente el archivo tsconfig.json, lo que puede ocultar errores potenciales.

Ejemplo Común:

Un proyecto sin opciones estrictas activadas:

JSON
{
  "compilerOptions": {
    "strict": false}
}

Esto permite comportamientos imprecisos, como no verificar si las propiedades existen.

La Solución:

Activa las opciones estrictas para aprovechar al máximo TypeScript.

Configuración Recomendada:

JSON
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true,
    "strictNullChecks": true}
}

5. Confundir Tipos e Interfaces

El Problema:

Los principiantes suelen tener dificultades para elegir entre type e interface. Aunque son similares, tienen casos de uso específicos.

Ejemplo de Error:

TSX
type Usuario = { nombre: string };
type Admin = Usuario & { permisos: string[] };

interface Usuario { nombre: string; }
interface Admin extends Usuario { permisos: string[]; }

// Mezcla innecesaria de enfoques.

La Solución:

Usa interface para objetos o cuando se requiera herencia. Usa type para combinaciones complejas o uniones.

Ejemplo Corregido:

TSX
interface Usuario {
  nombre: string;
}

interface Admin extends Usuario {
  permisos: string[];
}

const admin: Admin = { nombre: "Alice", permisos: ["leer", "escribir"] };

Bonus: Configurar un Proyecto React/Next.js con TypeScript

Paso 1: Crear un Proyecto

Para React:

BASH
npx create-react-app mi-proyecto --template typescript

Para Next.js:

BASH
npx create-next-app@latest mi-proyecto --typescript

Paso 2: Verificar tsconfig.json

Next.js genera automáticamente un archivo tsconfig.json con opciones adecuadas. Asegúrate de que las siguientes configuraciones estén activadas:

JSON
{
  "compilerOptions": {
    "strict": true,
    "baseUrl": ".",
    "paths": {
      "@/components/*": ["components/*"],
      "@/utils/*": ["utils/*"]
    }
  }
}

Paso 3: Agregar Tipos Globales

Para evitar repetir los mismos tipos, crea un archivo types/global.d.ts:

TSX
declare module "*.css";
declare module "*.png";

Paso 4: Usar Props Tipados

Tipado para un componente React:

TSX
interface Props {
  titulo: string;
  edad?: number; // Opcional
}

const MiComponente: React.FC<Props> = ({ titulo, edad }) => (
  <div>
    <h1>{titulo}</h1>
    {edad && <p>Edad: {edad}</p>}
  </div>
);

Conclusión

TypeScript es una herramienta fantástica, pero como cualquier herramienta, requiere aprendizaje para evitar errores comunes. Siguiendo estos consejos, puedes evitar problemas frecuentes y aprovechar al máximo el poder de TypeScript. ¿Listo para escribir código más seguro?

Abonnes-toi à la NewsLetter

Apprends les meilleures pratiques pour devenir un développeur web moderne (JavaScript / React / Next).

Gagner sa vie grâce au code
Devenir développeur Freelance
+35 000 développeurs déjà inscrits.

Accès instantané. Aucune carte de crédit requise.

Rejoins +35 000 développeurs déjà inscrits.