Ambos pueden contener cualquier valor, pero difieren en seguridad. any desactiva el chequeo de tipos; unknown lo mantiene activo y te obliga a hacer narrowing antes de usar el valor.
ts
: = ;
a..;
();
: = ;
u.();
();
Ambos pueden contener cualquier valor, pero difieren en seguridad. any desactiva el chequeo de tipos; unknown lo mantiene activo y te obliga a hacer narrowing antes de usar el valor.
: = ;
a..;
();
: = ;
u.();
();
function handle(input: unknown) {
if (typeof input === "string") {
input.toUpperCase(); // ✅ inside the guard, TS knows it's a string
}
}
unknown es la contraparte type-safe de any: puedes asignar cualquier cosa a él, pero no puedes hacer nada con él hasta que demuestres qué es mediante un type guard.
unknown — para valores de tipo genuinamente desconocido en el límite: resultados de JSON.parse, respuestas de API, catch (e: unknown). Obliga a validar.any — vía de escape al migrar JS o cuando realmente no puedes tipar algo. Úsalo con moderación; se propaga silenciosamente y desactiva la seguridad.Recurrir a any anula el propósito de TypeScript.
Prefiere unknown en los límites sin tipar: mantiene las garantías del compilador mientras sigue aceptando entrada arbitraria, empujándote a validar los datos antes de confiar en ellos.