Есть ли способ в машинописи использовать объекты в качестве ключей? - PullRequest
0 голосов
/ 02 июля 2018

У меня есть классы буксировки:

class A {
  name: string;
  age: number;

  constructor(name: string, age: number) { 
      this.name = name;
      this.age = age;
  }
}

class B extends A {

}

Также у меня есть объект, в котором я хочу использовать экземпляры этих классов в качестве ключей:

const storage: Storage = {};

Так это будет выглядеть так:

const a = new A('Neo', 25);
const b = new A('Smith', 31);
storage[a] = 'What are you trying to tell me? That I can dodge bullets?';
storage[b] = 'Never send a human to do a machine's job.'

А потом я хочу различать значение ключами, например:

const keys = Object.keys(storage);
keys.forEach(key => {
  if (key instanceof A) {
    console.log('This is Neo');
  } else if (key instanceof B) {
    console.log('This is Smith');
  }
})

Как должен выглядеть Storage интерфейс, потому что в машинописи

Тип параметра подписи индекса должен быть «строка» или «число»

1 Ответ

0 голосов
/ 02 июля 2018

Можно ли в машинописи использовать объекты в качестве ключей?

Нет, не с объектными литералами.

Однако вместо этого вы можете использовать Карта :

Объект Map содержит пары ключ-значение. Любое значение (как объекты, так и примитивные значения) может использоваться в качестве ключа или значения.

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