🥇 Type Manipulation, Mapped Types (tipos basados en mapas)

Un mapped type (tipo basado en mapas) es un tipo generic que utiliza una unión generada a partir de keyof para iterar a través de las propiedades de un tipo y crear así otro.

type Persona = {
    trabaja: boolean;
    estudia: boolean;
    edad: number;
}

type Opciones<T> = {
    [key in keyof T]: boolean;
}

const o : Opciones<Persona> = {
    estudia: true,
    trabaja: true,
    edad: 200, // <- esta línea genera un error ya que todos deben ser boolean
}

En este ejemplo Opciones tomará el nombre de todas las propiedades de T y cambiará los valores a boolean.