TypeScript:
Korzystanie z tablic asocjacyjnych
Jak to zrobić:
Tworzenie i używanie asocjacyjnych tablic w TypeScript jest proste. Oto krótki przewodnik:
// Deklarowanie asocjacyjnej tablicy
let user: { [key: string]: string } = {};
// Dodawanie danych
user["name"] = "Jane Doe";
user["email"] = "[email protected]";
console.log(user);
Wynik:
{ name: 'Jane Doe', email: '[email protected]' }
Iterowanie przez pary klucz-wartość jest również łatwe:
for (let key in user) {
console.log(key + ": " + user[key]);
}
Wynik:
name: Jane Doe
email: jane@example.com
A jeśli masz do czynienia z mieszanką typów danych, system typów TypeScript przychodzi z pomocą:
let mixedTypes: { [key: string]: string | number } = {};
mixedTypes["name"] = "John Doe";
mixedTypes["age"] = 30;
console.log(mixedTypes);
Wynik:
{ name: 'John Doe', age: 30 }
W głąb
W TypeScript, to co nazywamy asocjacyjnymi tablicami, są w zasadzie obiektami. Historycznie, w językach takich jak PHP, asocjacyjne tablice są fundamentalnym typem, ale JavaScript (i przez rozszerzenie, TypeScript) używa obiektów do tego celu. To podejście jest zarówno siłą, jak i ograniczeniem. Obiekty zapewniają wysoce dynamiczną strukturę do kojarzenia ciągów znaków z wartościami, ale nie są przeznaczone do użytku jako “tablice” w tradycyjnym sensie. Na przykład, nie można bezpośrednio używać na tych obiektach metod tablicowych takich jak push
czy pop
.
W przypadkach, gdy potrzebujesz uporządkowanych kolekcji par klucz-wartość z operacjami podobnymi do tablic, TypeScript (i nowoczesny JavaScript) oferuje obiekt Map
:
let userMap = new Map<string, string>();
userMap.set("name", "Jane Doe");
userMap.set("email", "[email protected]");
userMap.forEach((value, key) => {
console.log(key + ": " + value);
});
Chociaż system typów TypeScript i funkcje ES6, takie jak Map
, oferują potężne alternatywy, zrozumienie, jak używać obiektów jako asocjacyjnych tablic jest przydatne w scenariuszach, gdy literały obiektów są bardziej wydajne lub przy pracy z strukturami danych JSON. To wszystko sprowadza się do wyboru właściwego narzędzia do zadania.