Index-Signaturen für Objekte
Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy. Lektion 72 von 73.
Manchmal müssen Sie mit Objekten arbeiten, bei denen Sie wissen, welche Art von Werten sie enthalten werden, aber die spezifischen Eigenschaftsnamen im Voraus nicht kennen. Dies kommt häufig vor, wenn man mit Dictionaries, Maps oder Konfigurationsobjekten arbeitet, bei denen die Schlüssel dynamisch sind.
Index-Signaturen ermöglichen es Ihnen, die Typstruktur für solche Objekte zu definieren. Die Syntax verwendet eckige Klammern, um den Schlüsseltyp und den Werttyp anzugeben:
interface StringDictionary {
[key: string]: number;
}Dieses Interface besagt: „Jeder String-Schlüssel wird einen Zahlenwert haben.“ Sie können dann Objekte erstellen, die diesem Muster entsprechen:
let scores: StringDictionary = {
"alice": 95,
"bob": 87,
"charlie": 92
};Index-Signaturen sind besonders nützlich für Szenarien wie das Speichern von Benutzereinstellungen, das Cachen von Daten mit dynamischen Schlüsseln oder die Arbeit mit API-Antworten, bei denen die Eigenschaftsnamen zur Kompilierzeit nicht bekannt sind. Der Schlüsseltyp ist normalerweise string oder number, während der Werttyp jeder gültige TypeScript-Typ sein kann.
Aufgabe
EinfachErstellen Sie ein Interface für ein Produktkatalog-System, in dem Produktkategorien und deren Lagerbestände dynamisch gespeichert werden.
Erstellen Sie ein Interface namens ProductCatalog, das eine Index-Signatur verwendet, um String-Schlüssel (Produktnamen) auf Number-Werte (Lagerbestände) abzubilden.
Erstellen Sie eine Funktion namens getStockLevel, die:
- Zwei Parameter entgegennimmt:
catalogvom TypProductCatalogundproductNamevom Typstring - Die Lagerbestandsmenge für den angegebenen Produktnamen zurückgibt
0zurückgibt, wenn das Produkt nicht im Katalog existiert- Einen expliziten Rückgabetyp
numberhat
Erstellen Sie eine Funktion namens updateStock, die:
- Drei Parameter entgegennimmt:
catalogvom TypProductCatalog,productNamevom TypstringundnewQuantityvom Typnumber - Die Lagerbestandsmenge für das angegebene Produkt aktualisiert
voidzurückgibt
Erstellen Sie eine Funktion namens getTotalStock, die:
- Einen Parameter
catalogvom TypProductCatalogentgegennimmt - Die Summe aller Lagerbestände im Katalog zurückgibt
- Einen expliziten Rückgabetyp
numberhat
Erstellen Sie Testdaten:
- Erstellen Sie
inventoryvom TypProductCatalogmit den folgenden Produkten:"laptop":15"mouse":50"keyboard":25"monitor":8
Testen Sie Ihre Funktionen und geben Sie die folgenden Ergebnisse aus:
- Rufen Sie
getStockLevelmitinventoryund"laptop"auf - Rufen Sie
getStockLevelmitinventoryund"tablet"auf - Rufen Sie
getTotalStockmitinventoryauf - Rufen Sie
updateStockmitinventory,"mouse"und75auf - Rufen Sie
updateStockmitinventory,"webcam"und12auf - Rufen Sie
getStockLevelmitinventoryund"mouse"auf - Rufen Sie
getStockLevelmitinventoryund"webcam"auf - Rufen Sie
getTotalStockmitinventoryauf
Probier es selbst
// TODO: Schreibe hier deinen Code
// Erstelle das ProductCatalog Interface
// Erstelle die getStockLevel Funktion
// Erstelle die updateStock Funktion
// Erstelle die getTotalStock Funktion
// Erstelle Testdaten - inventory Objekt
// Teste die Funktionen und gib die Ergebnisse aus
console.log(getStockLevel(inventory, "laptop"));
console.log(getStockLevel(inventory, "tablet"));
console.log(getTotalStock(inventory));
updateStock(inventory, "mouse", 75);
updateStock(inventory, "webcam", 12);
console.log(getStockLevel(inventory, "mouse"));
console.log(getStockLevel(inventory, "webcam"));
console.log(getTotalStock(inventory));Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Einführung in TypeScript
1Erste Schritte mit TS
Was ist TypeScript?Warum TypeScript verwenden?Dein erster TypeScript-CodeKompilierungsprozess & FehlerZusammenfassung: Einführung in TS4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von Arrow-FunktionenDer Rückgabetyp 'void'Optionale Parameter mit '?'Standard-ParameterwerteTypisierung von Rest-ParameternDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen erstellen2Basis-Typen
Basis-Typen: str, num, booleanDer 'any'-Typ: Der NotausgangDer 'unknown'-TypArbeiten mit 'null' & 'undef'Typinferenz in der PraxisExplizite Typ-AnnotationenZusammenfassung: Übung zu Basis-Typen5Typen: Aliase, Unions & Intersections
Typ-Aliase für primitive DatentypenUnion-Typen ('|')Arbeiten mit Union-TypenLiteral-TypenIntersection-Typen ('&')Kombinieren von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen8Enums
Was ist ein numerisches Enum?Numerische Enums verwendenWas ist ein String-Enum?String-Enums verwendenHeterogene EnumsZusammenfassung: Enums verwenden11Fortgeschrittene Themen
Type AssertionsType Guards: in & instanceofDer 'never'-TypNullable Types ('strictNull')Index-Signaturen für ObjekteRecap: Typen verfeinern3Datenstruktur: Arrays & Tupel
Typisierte Arrays'readonly'-Modifikator für ArraysWas ist ein Tupel?Deklarieren von und Zugriff auf TupelDestrukturierung von TupelnReadonly-TupelMehrdimensionale typisierte ArraysSpread-Operator mit ArraysZusammenfassung: Arrays und TupelÜbe selbstständig: Online-JavaScript-Compiler