DocumentX Logo
DocumentX.
Ctrl+K
TypeScript/Tipos de Datos

Estructuras de Datos

Guía de Arrays, Tuplas, Interfaces, Types, Enums, Sets y Maps con ejemplos prácticos.

Estructuras de Datos en TypeScript

TypeScript permite organizar y estructurar la información mediante colecciones, contratos de objetos y tipos personalizados que garantizan la seguridad de nuestro código.


1. Array

Colección ordenada de elementos que pertenecen al mismo tipo de dato.

typescriptlet frutas: string[] = ["Manzana", "Banana"];
let numeros: number[] = [1, 2, 3];

2. Tupla

Un array de tamaño fijo donde cada posición tiene un tipo de dato específico asignado.

typescriptlet usuario: [string, number] = ["Carlos", 25];
usuario = ["Juan", 30];

3. Interface

Define la estructura o contrato que debe cumplir un objeto, permitiendo propiedades requeridas y opcionales.

typescriptinterface Producto {
    id: number;
    nombre: string;
    precio: number;
    descuento?: number; // El '?' indica propiedad opcional
}

const laptop: Producto = {
    id: 1,
    nombre: "Laptop Pro",
    precio: 1200
};

// ❌ Error: Falta la propiedad requerida 'precio'
// const mouse: Producto = {
//     id: 2,
//     nombre: "Mouse Gamer"
// };

// ✅ Correcto: Incluye todas las propiedades requeridas
const mouse: Producto = {
    id: 2,
    nombre: "Mouse Gamer",
    precio: 250
};

4. Type (Alias de Tipo)

Permite definir nombres personalizados para la estructura de un objeto o para restringir valores mediante uniones.

Alias para Objetos

typescripttype Usuario = {
    nombre: string;
    email: string;
};

// ✅ Válido
const usuarioActual: Usuario = {
    nombre: "Carlos",
    email: "john@documnetx.com"
};

// ❌ Error: edad no forma parte del tipo Usuario
// const usuarioActual: Usuario = {
//     nombre: "Carlos",
//     email: "john@documnetx.com",
//     edad: 25
// };

Alias de Tipo para una Unión

typescripttype Rol = "Admin" | "User" | "Guest";

// ✅ Válido
let miRol: Rol = "Admin";

// ❌ Error: "SuperAdmin" no forma parte del tipo Rol
// miRol = "SuperAdmin";

5. Enum

Permite definir un conjunto de constantes nombradas para representar un número limitado de valores posibles.

typescript// Enum de texto
enum Estados {
    Pendiente = "PENDIENTE",
    Enviado = "ENVIADO",
    Entregado = "ENTREGADO"
}

// ✅ Válido
let estadoActual: Estados = Estados.Pendiente;
estadoActual = Estados.Enviado;

// ❌ Error: No se puede asignar un texto que no pertenezca al Enum
// estadoActual = "CANCELADO";

6. Set

Colección de valores donde no se permiten elementos duplicados.

typescriptconst idsUnicos = new Set<string>();

idsUnicos.add("ID-100");
idsUnicos.add("ID-200");
idsUnicos.add("ID-100"); // 💡 Se ignora silenciosamente por ser duplicado

7. Map

Colección de pares clave-valor donde se especifica el tipo de la clave y del valor.

typescriptconst carrito = new Map<string, number>();

carrito.set("Laptop", 1200);
carrito.set("Teclado", 80); // ✅ Válido

// ❌ Error: La clave debe ser un string y el valor un number
// carrito.set(101, "Precio Inválido");

Tabla Resumen

EstructuraDescripciónSintaxis de Ejemplo
ArrayLista ordenada homogéneastring[] o number[]
TuplaArray con tipos fijos por posición[string, number]
InterfaceContrato de estructura para objetosinterface Producto { ... }
TypeAlias para objetos o unionestype Rol = "Admin" | "User";
EnumColección de constantes nombradasenum Estados { ... }
SetLista sin elementos duplicadosnew Set<string>()
MapDiccionario clave-valor tipadonew Map<string, number>()