Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 236 · 19 de agosto de 2026 · Media

    Getters

    Implementa Getters<T> para que cada propiedad se convierta en un método sin argumentos llamado get más la clave capitalizada, devolviendo el tipo de valor original.

    01

    Intenta el puzle tú mismo

    Par 3

    Puzle

    getters.ts
    interface Person {
      name: string
      age: number
    }
    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
    • Getters<Person>—
      → { getName: () => string; getAge: () => number }
    • Getters<{ id: number }>—
      → { getId: () => number }
    • Getters<{}>—
      → {}

    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 20 de agosto de 2026

    La solución

    type Getters<T> = {
      [K in keyof T as `get${Capitalize<K & string>}`]: () => T[K]
    }

    El error más común

    type Getters<T> = {
      [K in keyof T as `get${K & string}`]: () => T[K]
    }

    Todo es correcto salvo la capitalización: esto produce getname y getage. La concatenación por sí sola no capitaliza, y en nombres de método camelCase ese único carácter es toda la convención.

    Línea por línea

    1. K & string

      keyof T puede incluir symbol y number, y Capitalize no acepta ninguno. Intersecar con string acota la clave a la parte interpolable y descarta el resto en silencio.

    2. () => T[K]

      El valor se convierte en un tipo función mientras se reescribe la clave. Ambas mitades de la propiedad cambian en el mismo mapeo, por eso no hace falta una segunda pasada.

    Para recordar

    El renombrado de claves se compone con todo lo demás del sistema de tipos: literales de plantilla, tipos intrínsecos de mayúsculas y condicionales funcionan dentro de una cláusula as. Así generan sus API los ORM y los tipos de emisores de eventos.

    Usa