Un type d'objet mappé opère sur un ensemble de types singletons et produit un nouveau type d'objet où chacun de ces singletons est transformé en un nom de propriété.
Par exemple, ceci :
type Foo = {
[K in "hello" | "world"]: string
};
serait équivalent à
type Foo = {
"hello": string;
"world": string;
};
Gardez à l'esprit qu'un type d'objet mappé est un opérateur de type distinct - la syntaxe entre accolades ne peut pas être utilisée dans les interfaces, ou les types d'objets avec d'autres membres. Par exemple
interface Foo {
[K in "hello" | "world"]: string
}
produit l'erreur suivante :
A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.
Les types d'objets mappés sont utiles pour un grand nombre de choses différentes. Plus d'informations ici : http://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types