Las **Tuplas** nos permiten crear arrays con un número fijo de elementos donde cada posición puede tener un tipo diferente. Los **Enums** nos ayudan a definir un conjunto de constantes con nombres claros, muy útiles para estados, tipos de enemigos, rarezas, etc.
Una tupla es como un array con estructura fija y tipos específicos por posición.
// [nombre, nivel, vida, daño]
let jugador: [string, number, number, number] = [
"Legend",
15,
320,
45
];
type Coordenada = [number, number, number]; // x, y, z
type ColorRGB = [number, number, number];
const posicionJugador: Coordenada = [120.5, 45.8, 300];
const colorEnemigo: ColorRGB = [255, 50, 50];
Nota: Las tuplas son ideales cuando el orden y la cantidad de valores son fijos (posición, estadísticas básicas, etc.).
Los enums permiten definir un conjunto de constantes con nombres significativos.
enum Rareza {
Comun = "Común",
Rara = "Rara",
Epica = "Épica",
Legendaria = "Legendaria"
}
enum EstadoJugador {
Vivo,
Muerto,
EnCombate,
EnInventario
}
enum TipoEnemigo {
Humanoide,
Bestia,
Dragón,
NoMuerto,
Elemental
}
interface Enemigo {
nombre: string;
tipo: TipoEnemigo;
rareza: Rareza;
vida: number;
}
const jefeFinal: Enemigo = {
nombre: "Dragón Ancestral",
tipo: TipoEnemigo.Dragón,
rareza: Rareza.Legendaria,
vida: 2500
};
enum Direccion {
Norte,
Sur,
Este,
Oeste
}
// [x, y, dirección, velocidad]
type Movimiento = [number, number, Direccion, number];
const movimientoJugador: Movimiento = [10, 25, Direccion.Este, 5.5];
Prueba esto en TypeScript Playground:
RarezaItem con al menos 4 rarezas (Común, Rara, Épica, Legendaria).[x: number, y: number, z: number].Item que use el Enum RarezaItem y un array tipado de items.ClasePersonaje y una tupla que represente estadísticas básicas de un personaje: [clase, nivel, vida, ataque].