Vamos a aprender todos los tipos (tipados) que existen en TypeScript, con su explicación y un ejemplo por cada uno.

Prepárate, que esto va cargado de conocimiento y emojis 😄📚

TypeScript es un superset de JavaScript que añade tipos estáticos.

Eso significa que puedes decirle al código qué tipo de dato debe tener una variable, y así evitar errores antes de que el programa corra. ✅❌


🗂️ Tipos primitivos (los básicos)

1️⃣ string – Cadenas de texto

let nombre: string = 'Cristian Zayas';

🗣️ Sirve para cualquier texto entre comillas.


2️⃣ number – Números (enteros y decimales)

let edad: number = 30;
let temperatura: number = 36.6;

🧮 Nada de int o float, aquí todo es number.


3️⃣ boolean – Verdadero o falso

let estaActivo: boolean = true;

🔘 Útil para condiciones, estados y validaciones.


4️⃣ null – Valor nulo (ausente intencionalmente)

let resultado: null = null;

🚫 Ideal para indicar que algo no tiene valor.


5️⃣ undefined – Aún no se ha definido

let mensaje: undefined = undefined;

📦 Se usa cuando no se ha asignado valor todavía.


6️⃣ symbol – Valor único e inmutable

let id: symbol = Symbol('id');

🔐 Útil en estructuras muy avanzadas o bibliotecas.


7️⃣ bigint – Números grandes

let numeroGrande: bigint = 9007199254740991n;

📏 Para cálculos de números gigantes que sobrepasan los límites de number.


🧺 Tipos estructurados

8️⃣ array – Arreglos

let frutas: string[] = ['Manzana', 'Banana', 'Mango'];

📚 También se puede usar Array.


9️⃣ tuple – Arreglos con tipos fijos

let coordenada: [number, number] = [10, 20];

📌 Útil para valores en par (como coordenadas, RGB, etc.)


🔟 object – Objetos con propiedades

let persona: { nombre: string; edad: number } = {
  nombre: 'Ana',
  edad: 28
};

📦 Puedes crear interfaces para reutilizar:

interface Usuario {
  nombre: string;
  correo: string;
}

let user: Usuario = { nombre: 'Zayas', correo: '[email protected]' };

🧩 Tipos especiales

1️⃣1️⃣ any – Cualquier tipo (pierdes seguridad de tipos)

let variable: any = 5;
variable = 'ahora soy texto';

⚠️ Úsalo solo cuando no hay otra opción.


1️⃣2️⃣ unknown – Tipo desconocido, pero más seguro que any

let dato: unknown = 'hola';
// dato.toUpperCase(); ❌ Error
if (typeof dato === 'string') {
  console.log(dato.toUpperCase()); // ✅
}

🔐 Obliga a verificar el tipo antes de usarlo.


1️⃣3️⃣ void – No devuelve nada (funciones sin retorno)

function saludar(): void {
  console.log('Hola dev 👋');
}

🫙 Se usa para funciones que solo ejecutan, no retornan.


1️⃣4️⃣ never – Nunca retorna (errores, bucles infinitos)

function error(): never {
  throw new Error('¡Algo salió mal!');
}

🚫 Ideal para funciones que nunca terminan correctamente.


💥 Tipos combinados

1️⃣5️⃣ Union types – Uno u otro

let valor: string | number = 'Hola';
valor = 100; // también válido

⚔️ Muy útil para parámetros que aceptan más de un tipo.


1️⃣6️⃣ Literal types – Valores específicos

let direccion: 'izquierda' | 'derecha' = 'izquierda';

📍 Útil cuando solo se permiten ciertos valores.


1️⃣7️⃣ Type alias – Alias de tipos

type ID = string | number;
let usuarioID: ID = 123;

📦 Reutiliza estructuras complejas con nombres sencillos.


1️⃣8️⃣ Enum – Enumeraciones (grupos de valores constantes)

enum Rol {
  Admin,
  Usuario,
  Invitado
}

let rolActual: Rol = Rol.Admin;

🧭 Ideal para estados, roles, opciones predefinidas.


🧠 Resumen en tabla

Tipo Descripción Ejemplo
string Texto 'Hola'
number Número 42
boolean Verdadero o falso true
null Valor nulo null
undefined No definido undefined
symbol Identificador único Symbol('id')
bigint Números grandes 1234567890123456789n
array Lista de valores [1, 2, 3]
tuple Lista con tipos específicos [true, 'hola']
object Estructura con propiedades { nombre: 'Zayas' }
any Puede ser cualquier tipo 'texto', 42, etc.
unknown Similar a any pero más seguro let x: unknown = true;
void Sin valor de retorno function hola(): void {}
never Nunca retorna function crash(): never {}
union Puede ser uno u otro `string
{% raw %}literal Solo acepta valores específicos `'ON'
{% raw %}type alias Tipo con nombre personalizado `type ID = string
{% raw %}enum Conjunto de valores nombrados enum Color { Rojo, Azul }

🧪 ¿Listo para practicar?

¿Qué tipo sería ideal para representar:

let estado = 'activo'; // solo puede ser 'activo' o 'inactivo'

✅ R: Un literal type:

let estado: 'activo' | 'inactivo' = 'activo';