Map en TypeScript : une collection clé-valeur typée

Map en TypeScript

Map en TypeScript : typer, parcourir et sauvegarder une Map | We.Inc

Typez une Map<K, V> en TypeScript, parcourez-la, convertissez-la en JSON et inversement, et choisissez entre Map, Record et un objet simple. Essayez une Map en direct dans le navigateur.

En TypeScript, une Map est la Map JavaScript ordinaire avec des types pour ses clés et ses valeurs : new Map<string, number>(). Les clés peuvent être n'importe quelle valeur, les entrées reviennent dans l'ordre où elles ont été ajoutées la première fois, size les compte, et get renvoie V | undefined. JSON.stringify ne sérialise pas une Map, il faut donc la convertir d'abord.

Les méthodes de Map et ce que renvoie TypeScript

Le bac à sable ci-dessous est une vraie Map qui tourne dans votre navigateur. Ajoutez, modifiez et supprimez des entrées, et observez trois choses : l'ordre que gardent les entrées, la valeur de size, et la différence entre sérialiser la Map elle-même et sérialiser une copie convertie.

Questions fréquentes

Comment déclarer le type d'une Map en TypeScript ?

Passez les types de clé et de valeur comme arguments génériques : const prices = new Map<string, number>(). Pour un champ ou un paramètre, écrivez le type Map<string, number>, ou ReadonlyMap<string, number> quand la fonction doit seulement la lire.

Pourquoi le type de map.get() inclut-il undefined ?

Parce que le compilateur ne peut pas savoir quelles clés se trouvent dans la Map à un moment donné. get est typé V | undefined, donc vous affinez le type avec un test if, une valeur de repli ?? ou un test has() avant de traiter la valeur comme V.

Pourquoi JSON.stringify(map) donne-t-il {} ?

Une Map garde ses entrées dans un emplacement interne, pas comme propriétés d'objet, donc JSON voit un objet vide. Convertissez d'abord : Object.fromEntries(map) pour des clés textuelles, ou [...map] pour un tableau de paires qui supporte tout type de clé.

Faut-il utiliser une Map ou un Record ?

Utilisez un Record pour un ensemble fixe de clés nommées et pour des données qui transitent depuis et vers JSON. Utilisez une Map quand les entrées apparaissent et disparaissent pendant l'exécution de l'app, quand les clés sont des nombres ou des objets, ou quand l'ordre d'insertion compte.

Mettre à jour une clé la déplace-t-elle à la fin ?

Non. Définir une clé existante change sa valeur mais conserve sa position d'origine. Pour la déplacer à la fin, supprimez la clé puis définissez-la à nouveau.

Map, Record et objet simple

Comment les clés sont comparées

Typer les Maps dans les signatures de fonction

Recettes de Map typées

Compter des mots avec une Map

La valeur de repli ?? gère la première apparition d'un mot, ce qui explique pourquoi un get renvoyant number | undefined est utile plutôt que gênant.

Sauvegarder une Map en JSON et la recharger

Un tableau de paires conserve chaque entrée et son ordre. Object.fromEntries est le choix le plus lisible quand toutes les clés sont des chaînes.

Accepter une Map en lecture seule

Dans total, appeler prices.set provoquerait une erreur de compilation, donc les appelants peuvent passer leur Map sans copie défensive.

Bac à sable Map en direct

Clé

Valeur (nombre)

Définir

Supprimer

Vider

Réinitialiser

Entrées dans l'ordre d'itération

La Map est vide.

size : {n}

"{v}" ajouté.

"{v}" supprimé.

"{v}" n'est pas dans la Map, donc delete a renvoyé false.

Saisissez d'abord une clé.

La valeur doit être un nombre.

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site