TypeScript Map: een getypeerde key-value-collectie

TypeScript Map

TypeScript Map: typeren, doorlopen en opslaan | We.Inc

Typeer een Map<K, V> in TypeScript, loop erover, zet hem om naar JSON en terug, en kies tussen Map, Record en een gewoon object. Probeer een live Map in de browser.

In TypeScript is een Map de gewone JavaScript-Map met types voor zijn sleutels en waarden: new Map<string, number>(). Sleutels kunnen elke waarde zijn, entries komen terug in de volgorde waarin ze eerst zijn toegevoegd, size telt ze, en get geeft V | undefined terug. JSON.stringify serialiseert geen Map, dus zet hem eerst om.

Map-methoden en wat TypeScript teruggeeft

De playground hieronder is een echte Map die in uw browser draait. Voeg entries toe, werk ze bij en verwijder ze, en let op drie dingen: de volgorde die entries behouden, wat size meldt, en het verschil tussen het stringifyen van de Map zelf en van een omgezette kopie.

Veelgestelde vragen

Hoe declareer ik het type van een Map in TypeScript?

Geef de sleutel- en waardetypes mee als generieke argumenten: const prices = new Map<string, number>(). Schrijf voor een veld of parameter het type als Map<string, number>, of ReadonlyMap<string, number> als de functie hem alleen moet lezen.

Waarom bevat het type van map.get() undefined?

Omdat de compiler niet kan weten welke sleutels er op een bepaald moment in de Map zitten. get is getypeerd als V | undefined, dus u vernauwt met een if-controle, een ??-fallback of een has()-test voordat u de waarde als V behandelt.

Waarom geeft JSON.stringify(map) {}?

Een Map bewaart zijn entries in een interne slot, niet als objecteigenschappen, dus JSON ziet een leeg object. Zet hem eerst om: Object.fromEntries(map) voor string-sleutels, of [...map] voor een array met paren die elk sleuteltype overleeft.

Gebruik ik een Map of een Record?

Gebruik een Record voor een vaste set benoemde sleutels en voor data die van en naar JSON gaat. Gebruik een Map als entries komen en gaan terwijl de app draait, als sleutels getallen of objecten zijn, of als de volgorde van toevoegen ertoe doet.

Verplaatst het bijwerken van een sleutel die naar het einde?

Nee. Een bestaande sleutel opnieuw instellen wijzigt de waarde maar behoudt de oorspronkelijke positie. Om hem naar het einde te verplaatsen, verwijdert u de sleutel en stelt u hem opnieuw in.

Map, Record en een gewoon object

Hoe sleutels worden vergeleken

Maps typeren in functiesignaturen

Recepten voor getypeerde Maps

Woorden tellen met een Map

De ??-fallback vangt de eerste keer dat een woord voorkomt af, en daarom is het juist handig en niet hinderlijk dat get number | undefined teruggeeft.

Een Map opslaan als JSON en weer inladen

Een array met paren behoudt elke entry en de volgorde ervan. Object.fromEntries is de leesbare keuze als elke sleutel een string is.

Een alleen-lezen Map accepteren

Binnen total zou prices.set aanroepen een compileerfout zijn, dus aanroepers kunnen hun Map doorgeven zonder defensieve kopie.

Live Map-playground

Sleutel

Waarde (getal)

Instellen

Verwijderen

Wissen

Herstellen

Entries in iteratievolgorde

De Map is leeg.

size: {n}

"{v}" toegevoegd.

"{v}" verwijderd.

"{v}" staat niet in de Map, dus delete gaf false terug.

Typ eerst een sleutel.

De waarde moet een getal zijn.

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap