Una de las confusiones más comunes en TypeScript es cuándo usar any y cuándo usar unknown. Ambos parecen hacer lo mismo: aceptar cualquier tipo de valor. Pero hay una diferencia crucial que puede salvarte de muchos bugs.
La diferencia en una oración
any: "No me importa el tipo, déjame hacer lo que quiera"unknown: "No sé el tipo, pero voy a verificarlo antes de usarlo"
El problema con any
any es como desactivar TypeScript para esa variable:
🎬 ¿Te está gustando este contenido? Tenemos más tutoriales en video en nuestro canal de YouTube.
La solución: unknown
unknown te obliga a verificar el tipo antes de usarlo:
Casos de uso reales
Parsing de JSON
API responses
Type Guards personalizados
Para hacer el código más limpio, puedes crear type guards:
Cuándo usar cada uno
| Situación | Usa |
|---|---|
| Migrando código JS a TS rápidamente | any (temporalmente) |
| Datos de fuentes externas (APIs, JSON) | unknown |
| Event handlers genéricos | unknown |
| Tests o prototipos rápidos | any (con cuidado) |
| Librerías que no tienen tipos | any (o crea los tipos) |
| Funciones de utilidad genéricas | unknown con type guards |
Regla de oro
Usa
unknownpor defecto. Solo usaanycuando realmente necesites escapar del sistema de tipos temporalmente.
Bonus: never
Ya que estamos, never es el opuesto de any:
Conclusión
anyes una salida de emergencia, úsala con moderaciónunknownes seguro y te obliga a validar- Combina
unknowncon Zod o type guards para máxima seguridad
TypeScript está para ayudarte, no para estorbarte. Usa unknown y deja que el compilador trabaje a tu favor.
Abrazo. bliss.

Aprende en 5 minutos qué es HTML y cuando utilizar cada una de sus etiquetas
Checa este otro Post

