как объявить и создать словарь с объектом в качестве ключа - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь создать словарь машинописного текста, ключом которого является объект с 2 свойствами:

Я пытался использовать интерфейс для ключа:

 /*
export interface IMyDictionary<TValue>
{
  [{ property1 : string, property2: number}] : TValue  //or 
  [IMyDictionaryKey] : TValue // none of them works
}
*/
export interface IMyDictionaryKey
{
   property1 : string;
   property2 : number
}

export class MyDictionaryKey implements IMyDictionaryKey
{
    property1 : string;
    property2 : number;
    constructor(prop1: string, prop2 : number)
    {
       property1 = prop1;
       property2 : prop2;
    }
}

в сам компонент я хотел бы сделать что-то вроде:

Mydictionary : IMyDictionary<number[]>; //OR 
Mydictionary : {} = {};

и установить новые элементы значения ключа:

this.Mydictionary[new MyDictionaryKey("AAAA", 1) as IMyDictionaryKey] = [];

, а затем вставить массив значений в качестве значения для этого ключа :

this.Mydictionary[{ property1: "AAAA", property2: 1}] = [1,2,3,4];

1 Ответ

0 голосов
/ 21 января 2020

Вместо использования простого javascript объекта в качестве словаря используйте Map . Map может использовать любой объект в качестве ключа: new Map<IMyDictionaryKey, any>. В частности, существует WeakMap , который фокусируется на использовании объектов в качестве ключей.

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