Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    Formas de objeto

    Record

    Construye un tipo de objeto a partir de un conjunto de claves y un tipo de valor.

    Qué es

    El constructor frente al selector que es `Pick`. Dada una unión de claves y un tipo de valor produce el objeto con esas claves, y dado `string` produce en cambio una firma de índice. Esos dos comportamientos se parecen y no son lo mismo: uno es una forma fija y el otro un diccionario.

    Ejemplos

    • Record<'a' | 'b', number>
      { a: number; b: number; }
    • Record<string, number>
      { [x: string]: number; }

      Una firma de índice, no una forma fija — toda clave está permitida y ninguna garantizada.

    • Record<'id', string>
      { id: string; }

    Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.

    Lo que no hace

    • No promete que las claves existan en tiempo de ejecución. `Record<string, number>` te dejará leer una clave que nunca se asignó y te dará `number`.
    • No varía el valor por clave. Cuando cada clave necesita su propio tipo de valor, quieres un tipo mapeado con `as`, no `Record`.

    Conclusión

    Una unión literal de claves te da una forma que el compilador comprobará. `string` te da un diccionario que no puede. Elige a conciencia.