Typescript Generics: Карта Получить объекты с именем интерфейса? - PullRequest
0 голосов
/ 03 апреля 2020

возможно ли с помощью дженериков машинописи получить прежний инициализированный класс, который реализует интерфейс y, получаемый с помощью универсальной c функции?

interface InterfaceX{};
interface InterfaceY extends InterfaceX {
  doSomethingOnObjtY(): void;
};
class ClassY implements InterfaceY{  doSomethingOnObjtY(): void {};};
class ClassZ {

  map: Map<string, InterfaceX> = new Map();
  constructor(){
    const ObjtY = new ClassY();

    this.map.set(typeof ObjtY, ObjtY);
  }
  getObject<T extends InterfaceX>():InterfaceX{
    return this.map.get(T as string); //<-- this is not possible, any ideas?
  }
}

const objZ = new ClassZ();
(<InterfaceY>objZ.getObject<InterfaceY>()).doSomethingOnObjtY();

Что ж, в моем случае мне нужно преобразовать тип в строка для запроса карты и получения соответствующего объекта этого типа. Может ли это быть достигнуто другими способами или что мне нужно сделать, чтобы все заработало?

https://stackblitz.com/edit/typescript-2wmoha

Заранее спасибо

Редактировать: // заменено исполняемым машинописным кодом

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