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. Головне - правильний вибір інструменту для завдання.