возможно ли с помощью дженериков машинописи получить прежний инициализированный класс, который реализует интерфейс 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
Заранее спасибо
Редактировать: // заменено исполняемым машинописным кодом