Використання асоціативних масивів

TypeScript:
Використання асоціативних масивів

Як:

Створення та використання асоціативних масивів в TypeScript є простим. Ось основні кроки:

// Оголошення асоціативного масиву
let user: { [key: string]: string } = {};

// Додавання даних
user["name"] = "Джейн Доу";
user["email"] = "[email protected]";

console.log(user);

Вивід:

{ name: 'Джейн Доу', email: '[email protected]' }

Ітерування по парам ключ-значення теж легке:

for (let key in user) {
    console.log(key + ": " + user[key]);
}

Вивід:

name: Джейн Доу
email: jane@example.com

І якщо ви маєте справу зі змішанням типів даних, система типів TypeScript стане в пригоді:

let mixedTypes: { [key: string]: string | number } = {};
mixedTypes["name"] = "Джон Доу";
mixedTypes["age"] = 30;

console.log(mixedTypes);

Вивід:

{ name: 'Джон Доу', age: 30 }

Поглиблене вивчення

В TypeScript, те, що ми називаємо асоціативними масивами, насправді є об’єктами. Історично, в мовах як-от PHP, асоціативні масиви є фундаментальним типом, але JavaScript (і, відповідно, TypeScript) використовує об’єкти для цих цілей. Цей підхід є одночасно силою та обмеженням. Об’єкти забезпечують високодинамічну структуру для асоціювання рядків зі значеннями, але вони не призначені для використання як “масиви” у традиційному розумінні. Наприклад, ви не можете прямо застосовувати до цих об’єктів методи масиву, такі як push або pop.

Для випадків, коли вам потрібні впорядковані колекції пар ключ-значення з подібними до масиву операціями, TypeScript (і сучасний JavaScript) пропонує об’єкт Map:

let userMap = new Map<string, string>();
userMap.set("name", "Джейн Доу");
userMap.set("email", "[email protected]");

userMap.forEach((value, key) => {
    console.log(key + ": " + value);
});

Хоча система типів TypeScript та особливості ES6, як-от Map, пропонують потужні альтернативи, розуміння способу використання об’єктів як асоціативних масивів корисне для сценаріїв, де літерали об’єктів ефективніші, або при роботі зі структурами даних JSON. Головне - правильний вибір інструменту для завдання.