Principales errores de desarrolladores TypeScript principiantes: cómo escribir código limpio y seguro
TypeScript es una herramienta poderosa que ayuda a los desarrolladores a escribir código JavaScript más predecible y seguro. Sin embargo, al migrar desde JS, muchos principiantes cometen los mismos errores, anulando las ventajas del tipado estricto. En este artículo analizaremos los 4 errores más comunes de los desarrolladores TypeScript principiantes y mostraremos cómo corregirlos con ejemplos prácticos.
1. Abuso del tipo any
El error más frecuente y peligroso es usar any en todas partes donde TypeScript pide especificar un tipo. Esto convierte tu código nuevamente en JavaScript común, privándote de las sugerencias del editor y la verificación de tipos durante la compilación.
❌ Ejemplo incorrecto:
function processData(data: any) { return data.name.toUpperCase();}
const result = processData(42); // ¡Error en tiempo de ejecución! Los números no tienen la propiedad name✅ Ejemplo correcto:
interface UserData { name: string; age: number;}
function processData(data: UserData): string { return data.name.toUpperCase();}
const user: UserData = { name: "Iván", age: 30 };const result = processData(user); // Funciona correctamenteConsejo: Intenta usar unknown en lugar de any si el tipo realmente es desconocido. unknown te obligará a realizar una verificación de tipo antes de usar el valor.
2. Ignorar el Modo Estricto (Strict Mode)
Muchos desarrolladores principiantes desactivan el modo estricto (strict: true) en tsconfig.json para "no distraerse con errores". Esto te priva de la principal ventaja de TypeScript: la detección temprana de posibles bugs.
Qué incluye el Strict Mode:
strictNullChecks— prohíbe asignarnullyundefineda variables si no se especifica explícitamente.noImplicitAny— prohíbe el uso implícito deany.strictFunctionTypes— verificación más estricta de tipos de funciones.
❌ Sin Strict Mode:
function getLength(value: string | null) { return value.length; // Error en tiempo de ejecución si value = null}✅ Con Strict Mode:
function getLength(value: string | null): number { if (value === null) { return 0; // Manejamos null explícitamente } return value.length; // TypeScript sabe que value es string}Consejo: Siempre activa "strict": true en tsconfig.json. Esto te ahorrará horas de depuración en el futuro.
3. Manejo incorrecto de la asincronía
Los errores con promesas y async/await son clásicos. Los principiantes a menudo olvidan manejar errores o tipifican incorrectamente las funciones asíncronas.
❌ Ejemplo incorrecto:
async function fetchData(url: string) { const response = await fetch(url); const data = response.json(); // ¡Olvidaste el await! return data;}✅ Ejemplo correcto:
interface ApiResponse { id: number; title: string;}
async function fetchData(url: string): Promise<ApiResponse> { try { const response = await fetch(url); if (!response.ok) { throw new Error(`¡Error HTTP! estado: ${response.status}`); } const data: ApiResponse = await response.json(); return data; } catch (error) { console.error("Error al cargar datos:", error); throw error; // Relanzamos el error }}Consejo: Siempre usa try...catch para manejar errores en funciones asíncronas y no olvides el await al llamar métodos que devuelven una promesa.