Type Immutable

Il s'agit d'un wrapper générique. Son objectif est de rendre n'importe quel objet immutable. Cette contrainte ne s'applique que dans la phase de transpilation. Elle permet de s'assurer en phase de développement que rien ne viendra muter le dit objet.

type Immutable<T> = {
    readonly [K in keyof T]: Immutable<T[K]>;
}

Les applications sont multiples. Le cas qui me vient en premier a l'esprit serait un store qui ne renverrait son état qu'en lecture seule. Toute tentative de le muter générerait une erreur, invitant ainsi le développeur a se questionner sur la bonne méthode pour arriver a sa fin.