Avatar ·

Tipos `unknown` y `any` en TypeScript: ¿cuál es la diferencia y cuándo usar cada uno?

¡Hola a todos! Recientemente comencé a estudiar TypeScript y me encontré con dos tipos que a primera vista parecen muy similares: `any` y `unknown`. Ambos permiten almacenar valores de cualquier tipo, pero siento que hay alguna diferencia importante entre ellos que se me escapa. Por ejemplo, escribo una función que recibe datos de una API. No sé de antemano qué vendrá exactamente — puede ser un objeto, una cadena o un número. Así es como lo hago ahora: ```typescript function processData(data: any) { console.log(data.toUpperCase()); // Funciona sin errores, pero en tiempo de ejecución puede fallar } ``` Pero si intento usar `unknown`, obtengo un error: ```typescript function processDataSafe(data: unknown) { console.log(data.toUpperCase()); // Error: Object is of type 'unknown' } ``` ¿Por qué sucede esto? Al parecer, ambos tipos permiten almacenar cualquier cosa, pero `unknown` se comporta de manera más estricta. He leído que `unknown` es una alternativa type-safe a `any`, pero no termino de entender qué significa esto en la práctica.