Saltar al contenido
webtype.orgwebtype.org

    ↑↓ 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 6.0.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.