MÓDULO 1: TYPESCRIPT

Arrays Tipados

En TypeScript, los arrays pueden (y deben) tener un tipo definido. Esto nos ayuda a evitar errores y tener un código más seguro, especialmente cuando trabajamos con inventarios, listas de enemigos, habilidades, etc.


1. Sintaxis Básica de Arrays Tipados

Existen dos formas principales de declarar arrays tipados:

let enemigos: string[] = ["Goblin", "Orco", "Esqueleto"];

// Otra forma más moderna (usando Array<T>)
let niveles: Array<number> = [1, 5, 12, 25];

Recomendación: Usa la sintaxis tipo[] (más común y legible).


2. Arrays de Objetos (Muy usado en juegos)

interface Enemigo {
  nombre: string;
  vida: number;
  daño: number;
  tipo: string;
}

const enemigos: Enemigo[] = [
  { nombre: "Goblin",     vida: 80,  daño: 15, tipo: "Humanoide" },
  { nombre: "Orco Berserker", vida: 180, daño: 35, tipo: "Humanoide" },
  { nombre: "Dragón Rojo",   vida: 850, daño: 70, tipo: "Dragón" }
];

3. Operaciones Comunes con Arrays Tipados

const inventario: string[] = ["Espada", "Poción", "Escudo"];

// Añadir elemento
inventario.push("Arco");

// Recorrer el array
inventario.forEach(item => {
  console.log("Item: " + item);
});

// Filtrar
const armas = inventario.filter(item => item.includes("Espada"));

4. Arrays de Tipos Complejos (Habilidades)

interface Habilidad {
  nombre: string;
  daño: number;
  manaCoste: number;
  tipo: "físico" | "mágico";
}

const habilidades: Habilidad[] = [
  { nombre: "Golpe Fuerte", daño: 45, manaCoste: 0,   tipo: "físico" },
  { nombre: "Bola de Fuego", daño: 60, manaCoste: 25, tipo: "mágico" },
  { nombre: "Curación",     daño: -40, manaCoste: 20, tipo: "mágico" }
];

5. Tipo readonly (Solo lectura)

const clasesPermitidas: readonly string[] = [
  "Guerrero", 
  "Mago", 
  "Arquero", 
  "Sanador"
];

// clasesPermitidas.push("Ladrón"); // Error: no se puede modificar

🛠️ Tu Misión

Prueba esto en tu proyecto TypeScript o en TypeScript Playground:

  1. Crea un array tipado llamado inventario que contenga objetos con propiedades: nombre, cantidad y rareza.
  2. Añade al menos 4 items al inventario usando push().
  3. Crea una función que reciba el array y devuelva solo los items cuya rareza sea "Épica" o "Legendaria".
  4. Bonus: Crea un array tipado de habilidades con unión de tipos para la propiedad tipo.