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';