Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 263 · 15 de septiembre de 2026 · Media

    Desde entradas

    Implementa FromEntries<T> para que una unión de pares [clave, valor] se convierta en un objeto. Cada clave debe acabar con su propio valor, no con el de todos.

    01

    Intenta el puzle tú mismo

    Par 3

    Puzle

    from-entries.ts
    Intento 1 de 3Aún sin comprobar

    Sustituye ??? — tu solución se comprueba con los casos de abajo. Tab indenta; pulsa Escape y luego Tab para sacar el foco.

    Comprobaciones

    3
    • FromEntries<['a', 1] | ['b', 2]>—
      → { a: 1; b: 2 }
    • FromEntries<['x', string]>—
      → { x: string }
    • FromEntries<['a', 1] | ['a', 2]>—
      → { a: 1 | 2 }

    Cómo se juzga una comprobación Igualdad exacta de tipos, no asignabilidad — una intersección no es lo mismo que el objeto aplanado.

    Cómo le fue a todo el mundo

    Menos de 5 personas han resuelto este puzle hasta ahora. La distribución aparece cuando la muestra sea lo bastante grande como para significar algo.

    Juego corto

    Menos caracteres

    Aún no hay marcas públicas.

    Archivo
    02

    Solución comentada

    Publicado el 16 de septiembre de 2026

    La solución

    type FromEntries<T extends [PropertyKey, unknown]> = { [K in T[0]]: Extract<T, [K, unknown]>[1] }

    El error más común

    type FromEntries<T extends [PropertyKey, unknown]> = { [K in T[0]]: T[1] }

    Las claves están bien y todos los valores mal. Dentro del mapeo T sigue siendo la unión entera, así que T[1] son todos los valores a la vez: { a: 1 | 2; b: 1 | 2 }. Iterar sobre T[0] acota la *clave* que escribes, no la T de la que lees.

    Línea por línea

    1. Extract<T, [K, unknown]>

      Este es el paso de re-acotado. Para cada K extrae solo los pares cuyo primer elemento es esa clave, descartando el resto de la unión.

    2. FromEntries<['a', 1] | ['a', 2]>

      Dos pares comparten clave, así que la extracción conserva ambos y el valor de verdad es 1 | 2. Aquí la unión es correcta — la anterior también lo era, solo que pegada a las claves equivocadas.

    Para recordar

    Iterar sobre una unión no acota la unión en sí, solo la clave que produces. Si necesitas de vuelta el miembro correspondiente, Extract es como se pide.

    Usa