Объект как ключ карты в Typescript

#typescript #dictionary #keyvaluepair

#typescript #словарь #keyvaluepair

Вопрос:

Я хотел создать объект карты с объектом в качестве ключа и числом в качестве значения в Typescript. Я определил объект карты следующим образом:

 myMap: Map<MyObj,number>;
myObj: MyObj;
 

и когда я пытаюсь добавить пару к этому объекту карты:

 this.myMap[myObj]=1;
 

Это говорит мне, что тип TS2538 ‘myObj’ не может использоваться в качестве индексного типа. Возможно ли это в Typescript?

Ответ №1:

Вы должны использовать set функцию, например

 this.myMap.set(myObj, 1);
 

Комментарии:

1. Спасибо, это работает. Есть ли способ, которым я могу привязать значение этой карты к входным данным? Я попробовал <input id="param{{myObj.id}}" name="param{{myObj.id}}" type="number" maxlength="10" [(ngModel)]="myMap[myObj] в табличной директиве. Таким образом, он не мог различать ключи, я думаю, он не мог сравнивать ключи, и, насколько я знаю, не существует метода equals для различения ключей карты.

2. @oksuzlerOmer Возможно, вы захотите прочитать это developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /… и если у вас все еще есть проблемы, тогда откройте новый вопрос.