CodeAventura
TypeScript
▸Union types y narrowing▸Narrowing: refinando tipos

Misión

Editor
// Crea una función describir que reciba
// valor: string | number | boolean | null
// y devuelva un mensaje descriptivo para cada tipo

function describir(valor: string | number | boolean | null): string {
  // Tu código aquí
  return "";
}

console.log(describir("hola"));
console.log(describir(42));
console.log(describir(true));
console.log(describir(null));

Consola
08 / 25Narrowing: refinando tipos
Anterior

Narrowing: refinando tipos

¿Qué es narrowing?

Narrowing significa tomar un tipo amplio y "estrecharlo" a uno más específico. TypeScript es lo suficientemente inteligente como para entender tus verificaciones y ajustar el tipo automáticamente.

Dentro de cada rama del if, TypeScript sabe exactamente qué tipo tiene valor. No necesitas hacer casting manual — TypeScript lo deduce de tu lógica.

Técnica 1: typeof

typeof funciona para tipos primitivos:

Los valores posibles de typeof son: "string", "number", "boolean", "object", "function", "undefined", "bigint", "symbol".

Técnica 2: Truthiness (verificación de verdad)

En JavaScript, valores como null, undefined, 0, "" y false son "falsy". TypeScript usa esto para narrowing:

if (nombre) descarta null y undefined de la ecuación.

Técnica 3: Igualdad

Comparar con un valor específico también refina:

TypeScript entiende que si dos uniones son iguales, solo pueden ser del tipo que comparten.

Técnica 4: el operador in

Para objetos, in verifica si una propiedad existe:

Si "nadar" está en el objeto, TypeScript sabe que es un Pez.

TypeScript recuerda el narrowing

El narrowing aplica en toda la rama del código:

Cada verificación reduce las posibilidades, y TypeScript lo rastrea.

Tu desafío 🚀

Crea una función describir que reciba valor: string | number | boolean | null y devuelva un mensaje descriptivo diferente para cada tipo:

  • string → "Es un texto: ..."
  • number → "Es un número: ..."
  • boolean → "Es un booleano: ..."
  • null → "No hay valor"

Usa typeof para el narrowing. Prueba con los cuatro tipos.

Narrowing es lo que hace que los union types sean prácticos. TypeScript no solo te dice "puede ser A o B" — te ayuda a manejar cada caso de forma segura.