TypeScript Academy · Lección

El tipo any y por qué evitarlo

Comprenda any y cuándo contradice el propósito de TypeScript.

Lección 2 de 413 pasos

El tipo any y por qué evitarlo es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 4 lecciones en total.

Bienvenida

El tipo `any` es la vía de escape de TypeScript: desactiva todas las comprobaciones de tipos para una variable. En esta lección aprenderá cuándo aparece y por qué debe minimizar su uso.

Qué hace any

Una variable con el tipo `any` puede contener cualquier valor y admite cualquier operación. TypeScript deja de comprobarla por completo.
let x: any = 5;
x = 'hello';       // OK
x = true;          // OK
x.nonExistent();   // No error — but crashes at runtime!

Cómo se propaga any

Asignar una variable `any` a una variable con tipo contamina esta última. `any` se propaga silenciosamente por todo el código.
let data: any = fetchData();
let name: string = data.name; // name is now effectively any

Cuándo infiere any TypeScript

Si declara una variable sin un valor inicial y sin una anotación de tipo, TypeScript infiere `any`. Active `noImplicitAny` para convertir esto en un error de compilación.
let value; // inferred as any — dangerous!
value = 42;
value = 'hello';

// Fix:
let value2: number;

Indicador noImplicitAny

La opción del compilador `noImplicitAny` (activada por `strict`) le obliga a anotar los tipos en lugar de recurrir a `any` de forma predeterminada.
// tsconfig.json
{ "compilerOptions": { "noImplicitAny": true } }

// Now this is an error:
function process(data) { } // Error: Parameter has implicit any type

Usos legítimos de any

A veces `any` es inevitable: al migrar código JavaScript, trabajar con bibliotecas de terceros sin tipos o manejar datos realmente dinámicos. Utilícelo de forma limitada y local.
// Acceptable: narrow scope, clearly documented
function parseJson(raw: string): any {
  return JSON.parse(raw); // validate with Zod afterwards
}

Las aserciones de tipo como alternativa

En lugar de `any`, utilice aserciones de tipo (como `as Type`) cuando sepa más que el compilador. Esto es más seguro porque se compromete con un tipo específico.
const raw = JSON.parse(text) as { name: string; age: number };
console.log(raw.name); // typed correctly

any frente a object

El tipo `object` acepta cualquier valor no primitivo, pero no permite acceder arbitrariamente a sus propiedades, a diferencia de `any`. Ofrece una pequeña capa de seguridad.
let o: object = { x: 1 };
// o.x; // Error — object doesn't allow property access

let a: any = { x: 1 };
a.x; // OK — but no safety

any desactiva el autocompletado

Además de reducir la seguridad, utilizar `any` silencia el autocompletado y la navegación del IDE. Pierde todas las ventajas de las herramientas que proporciona TypeScript.

Reemplazar any por unknown

Para los datos externos que no controla, prefiera `unknown`. Le obliga a estrechar el tipo antes de utilizarlo, a diferencia de `any`, que le permite hacer cualquier cosa.
let input: unknown = getInput();
// input.toUpperCase(); // Error — must narrow first
if (typeof input === 'string') {
  console.log(input.toUpperCase()); // OK
}

El coste de any

Considere `any` como una deuda. Cada uso hace que su código sea menos seguro. Intente no tener ningún tipo `any` en el código de producción. Utilice la regla de ESLint @typescript-eslint/no-explicit-any.

Comprobación rápida

¿Qué opción del compilador hace que TypeScript informe de un error cuando una variable tiene un tipo `any` implícito?

Resumen

El tipo `any` desactiva la comprobación de tipos de TypeScript y se propaga por el código. Active noImplicitAny, reemplace `any` por `unknown` para los datos externos y utilice aserciones de tipo en casos específicos.
Gratis para empezar

Aprende TypeScript con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
101
Lecciones
352

Preguntas frecuentes

¿La lección «El tipo any y por qué evitarlo» es gratis?

Sí — el texto completo de «El tipo any y por qué evitarlo» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El tipo any y por qué evitarlo»?

Comprenda any y cuándo contradice el propósito de TypeScript. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar TypeScript Academy?

No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «El tipo any y por qué evitarlo»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?

Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Tipos primitivos: string, number y boolean
  2. El tipo any y por qué evitarlo
  3. unknown frente a any: la opción más segura
  4. null, undefined y comprobaciones estrictas de null
← Volver a TypeScript Academy