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. Всё сводится к выбору правильного инструмента для работы.