unknown vs any: cuál es la diferencia y cuándo usar cada uno en TypeScript
¡Hola! Recientemente empecé a aprender TypeScript y me encontré con los tipos `any` y `unknown`. Ambos parecen permitir almacenar cualquier cosa, pero no entiendo bien cuál es la diferencia entre ellos y cuándo usar cada uno.
Aquí hay un ejemplo que me confunde. Tengo una función que recibe datos de una API y no sé exactamente qué llegará:
```typescript
function processData(data: any) {
console.log(data.toUpperCase()); // Funciona, pero si data no es un string, falla en runtime
}
```
Si cambio `any` por `unknown`:
```typescript
function processData(data: unknown) {
console.log(data.toUpperCase()); // Error de compilación: Object is of type 'unknown'
}
```
Resulta que con `unknown` el código ni siquiera se compila. Entonces, ¿para qué sirve `unknown` si solo estorba? He oído que `unknown` se considera más seguro, pero en la práctica no veo ventajas, solo problemas adicionales.
También no entiendo cómo trabajar correctamente con `unknown`. Si recibo datos de una API, igual tendré que...