173 votes

Typescript: Comment définir des interfaces pour des objets imbriqués?

Supposons que ma charge utile JSON se décompose de la manière suivante:

 {
    name: "test",
    items: {
        "a": {
            id: 1,
            size: 10
        },
        "b": {
            id: 2,
            size: 34
        }
    }
}
 

Comment définir la définition de l'interface Example pour modéliser le fait que la valeur de la propriété items est un objet dont les clés sont des chaînes et dont les valeurs sont définies par l'interface Item:

 export interface Example {
    name: string;
    items: ???;

}

export interface Item {
    id: number;
    size: number;
}
 

283voto

Josh Crozier Points 30040

La machine vous permet d'ajouter un type de l'objet touches à l'aide de la syntaxe [key: string].

Comme indiqué dans la documentation, ils sont appelés à plaquettes indexables types:

Indexables types ont un indice de signature qui décrit les types que nous pouvons utiliser pour l'indexation de l'objet, correspondant à des types de retour lors de l'indexation.

Dans votre cas, vous devez utiliser la syntaxe suivante:

export interface Item {
    id: number;
    size: number;
}

export interface Example {
    name: string;
    items: {
        [key: string]: Item
    };
}

Pour référence, voici un lien vers un exemple vivant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X