В чем разница между картойи {[index: string]: MyObject} в TypeScript? - PullRequest
2 голосов
/ 22 апреля 2019

Если я хочу иметь словарь string:object с проверкой типа в TypeScript, есть два способа сделать это, о которых я знаю:

const m = new Map<string, MyObject>();
m.set("a", new MyObject("a"));
m.set("b", new MyObject("b"));

и

const m : {[index: string]: MyObject} = {};
m["a"] = new MyObject("a");
m["b"] = new MyObject("b");

Каковы преимущества и недостатки каждого из них?Если есть другой способ объявить и работать со строкой: словарь MyObject?

1 Ответ

1 голос
/ 23 апреля 2019

Как было подробно описано в этом ответе (голосуйте выше, чем у меня!), Объект с набранным ключом и значением (иногда называемый hashmap) обычно использовался в Typescript до того, как он имел поддержку Map:

const m : {[index: string]: MyObject} = {};

Проблема с этим подходом состоит в том, что ключи могут быть только типа строки или числа, и на самом деле не имеет значения, что вы используете в качестве типа ключа, так как числа / строки по-прежнему принимаются взаимозаменяемо (применяется только значение).

Typescript теперь имеет встроенную поддержку типа карты ES6, что не имеет каких-либо недостатков в отношении ключа, упомянутого выше.Что касается преимуществ хэш-карты по сравнению с картой, я не вижу ничего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...