TypeScript:
Verwendung von assoziativen Arrays
Wie man es macht:
Das Erstellen und Verwenden von assoziativen Arrays in TypeScript ist unkompliziert. Hier eine grundlegende Anleitung:
// Ein assoziatives Array deklarieren
let user: { [key: string]: string } = {};
// Daten hinzufügen
user["name"] = "Jane Doe";
user["email"] = "[email protected]";
console.log(user);
Ausgabe:
{ name: 'Jane Doe', email: '[email protected]' }
Das Iterieren über Schlüssel-Wert-Paare ist ebenfalls einfach:
for (let key in user) {
console.log(key + ": " + user[key]);
}
Ausgabe:
name: Jane Doe
email: jane@example.com
Und wenn Sie es mit einer Mischung aus Datentypen zu tun haben, ist das Typsystem von TypeScript nützlich:
let mixedTypes: { [key: string]: string | number } = {};
mixedTypes["name"] = "John Doe";
mixedTypes["age"] = 30;
console.log(mixedTypes);
Ausgabe:
{ name: 'John Doe', age: 30 }
Tiefergehend
In TypeScript sind das, was wir als assoziative Arrays bezeichnen, im Wesentlichen Objekte. Historisch gesehen sind in Sprachen wie PHP assoziative Arrays ein fundamentaler Typ, aber JavaScript (und damit auch TypeScript) verwendet für diesen Zweck Objekte. Dieser Ansatz ist sowohl eine Stärke als auch eine Einschränkung. Objekte bieten eine hochdynamische Struktur für die Zuordnung von Strings zu Werten, sind jedoch nicht dazu gedacht, im traditionellen Sinn als ‘Arrays’ verwendet zu werden. Beispielsweise können Sie Array-Methoden wie push
oder pop
nicht direkt auf diesen Objekten anwenden.
Für Fälle, in denen Sie geordnete Sammlungen von Schlüssel-Wert-Paaren mit array-ähnlichen Operationen benötigen, bietet TypeScript (und modernes JavaScript) das Map
-Objekt:
let userMap = new Map<string, string>();
userMap.set("name", "Jane Doe");
userMap.set("email", "[email protected]");
userMap.forEach((value, key) => {
console.log(key + ": " + value);
});
Während das Typsystem von TypeScript und ES6-Features wie Map
leistungsfähige Alternativen bieten, ist das Verständnis dafür, wie man Objekte als assoziative Arrays verwendet, nützlich für Szenarien, in denen Objektliterale effizienter sind oder wenn man mit JSON-Datenstrukturen arbeitet. Es geht darum, das richtige Werkzeug für den Job zu wählen.