CodeAventura
TypeScript
▸Tipos avanzados▸Record, Map y tipos de índice

Misión

Editor
Consola
La consola está vacía. Pulsa EJECUTAR para correr tu código.
21 / 24Record, Map y tipos de índice
Anterior

Record, Map y tipos de índice

El problema: objetos como diccionarios

A veces necesitas un objeto donde las claves no están predefinidas:

No puedes usar una interface normal porque no sabes qué claves habrá. Necesitas index signatures o Record.

Index signatures

Una index signature dice "cualquier clave de este tipo tendrá un valor de este otro tipo":

[key: string]: string significa: "las claves son strings y los valores también son strings".

Record<Keys, Type>: la versión limpia

Record es un utility type que hace lo mismo pero de forma más elegante:

Record<string, string> = objeto con claves string y valores string. Más legible que la index signature.

Record con claves específicas

Lo potente de Record es que puedes limitar las claves:

Record<Rol, Permisos> significa: "debe haber una entrada para cada Rol, y el valor es Permisos". Si olvidas un rol, TypeScript avisa:

Record para agrupaciones

Record vs Map

JavaScript tiene Map, una estructura de datos nativa para pares clave-valor. No confundirlo con Record:

RecordMap
Qué esUn tipo de TypeScriptUna estructura de datos de JS
En runtimeEs un objeto normal {}Es una instancia de Map
ClavesSolo string o numberCualquier tipo (objetos, etc.)
PesoCero (solo tipo)Genera código JS

Usa Record cuando tipas un objeto plano. Usa Map cuando necesitas la API de Map (set, get, has, delete, iteración ordenada).

Tu desafío 🚀

  1. Tienes una interface Pais con capital, población y continente
  2. Crea un Record<string, Pais> que mapee nombres de países a su información
  3. Crea una función que busque un país y devuelva su información
  4. Prueba buscando varios países

Record es tu herramienta para diccionarios tipados. Define qué claves y qué valores son válidos, y TypeScript se asegura de que todo encaje.