Использование ассоциативных массивов

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