Contenido del curso

any, unknown, never y void en TypeScript

Resumen

TypeScript ofrece tipos de datos que van más allá de string, number o boolean. Cuando dominas any, unknown, never y void, ganas flexibilidad para manejar valores dinámicos, validar entradas y controlar errores en aplicaciones más complejas. Esta guía te explica cuándo y cómo usar cada uno con ejemplos prácticos.

¿Qué es el tipo any en TypeScript y cuándo usarlo?

El tipo any es la puerta abierta de TypeScript: acepta cualquier valor sin restricciones. Lo declaras así y puedes asignarle una cadena, un número o un booleano sin que el compilador se queje.

typescript let variableAny: any; // variableAny = "Hello"; // variableAny = 42; // variableAny = true; console.log("Valor de variableAny: " + variableAny);

Si le asignas "Hello" y compilas con tsc main.ts seguido de node main.js, verás en consola el valor que decidiste pasar. Cambias el valor a 42 y ahora imprime el número. Es flexible, pero esa flexibilidad tiene un costo: pierdes el chequeo de tipos.

¿Cuándo conviene usar any? Solo cuando realmente no sabes qué tipo llegará y no puedes validarlo. Abusar de any anula los beneficios de TypeScript.

¿En qué se diferencia unknown de any?

Aquí viene lo interesante. El tipo unknown también acepta cualquier valor, pero te obliga a verificar el tipo antes de usarlo. No puedes simplemente imprimirlo o pasarlo a otra función sin antes confirmar qué es [3:30].

typescript let variableDesconocida: unknown; variableDesconocida = "Hello";

if (typeof variableDesconocida === "string") { console.log("variableUnknown es una cadena: " + variableDesconocida); }

Fíjate en un detalle clave: TypeScript exige tres signos de igual (===) para que la condición se cumpla. Dos no bastan. Si asignas un número y el if valida contra string, la sentencia simplemente no entra y nada se imprime.

¿Por qué usar unknown en vez de any? Porque te fuerza a validar antes de operar. Es la opción segura cuando recibes datos externos como respuestas de una API o input del usuario.

¿Cómo valido el tipo dentro de una variable unknown?

Usas typeof dentro de una sentencia if. Si coincide con string, number o boolean, ejecutas la lógica correspondiente. Si no coincide, el bloque se omite sin lanzar errores en tiempo de ejecución.

¿Para qué sirve el tipo never en funciones de TypeScript?

El tipo never describe funciones que nunca devuelven un valor porque interrumpen el flujo, normalmente lanzando un error [5:00]. Es muy útil para centralizar el manejo de errores.

typescript function lanzarError(mensaje: string): never { throw new Error(mensaje); }

lanzarError("Esto es un error");

Al compilar y ejecutar, verás primero el console.log previo y luego el error que tú mismo definiste. Cualquier línea de código posterior a la invocación de una función never no se ejecuta, porque el flujo se corta ahí mismo.

¿Qué significa never en TypeScript? Es el tipo de retorno para funciones que nunca terminan normalmente. Lanzan errores o entran en loops infinitos.

Ahora puede parecer poco útil, pero conforme tus aplicaciones crecen, tener funciones never dedicadas a errores te ahorra repetir lógica de validación en cada módulo.

¿Cuándo debo usar void en una función?

Usas void cuando una función ejecuta acciones pero no retorna nada. Es el caso típico de funciones que solo imprimen en consola o disparan efectos secundarios [6:30].

typescript function logMessage(message: string): void { console.log(message); }

logMessage("Este es un mensaje de log");

La función recibe un string, lo imprime y termina. No hay return. Al compilar con tsc main y ejecutar con node main.js, verás el mensaje en pantalla.

Un detalle práctico: si tienes una función never invocada antes de una void, el código posterior nunca se alcanza. Necesitas comentar o reorganizar la llamada al error para ver el log siguiente. Pequeño truco que ahorra confusiones cuando depuras.

Diferencias clave entre any, unknown, never y void

Para que te quede clara la separación entre los cuatro tipos, aquí va un resumen comparativo:

  • any: acepta cualquier valor, sin validación. Úsalo con cuidado.
  • unknown: acepta cualquier valor, pero exige verificar el tipo antes de operar.
  • never: tipo de retorno para funciones que nunca devuelven valor, típicamente porque lanzan errores.
  • void: tipo de retorno para funciones que ejecutan acciones pero no retornan nada.

Practicar con estos cuatro tipos te dará seguridad para construir aplicaciones más robustas. Asigna valores diferentes, fuerza errores a propósito y observa cómo responde el compilador. Cuéntame en los comentarios qué tipo te resulta más confuso o cuál ya estás usando en tus proyectos.

      any, unknown, never y void en TypeScript