export class Container { static instance: Container; private instances: Map = new Map(); public set(instance: T, name: string|null = null): void { this.instances.set(name ?? instance.constructor.name, instance); } public get(name: string): T { return this.instances.get(name); } static getInstance(): Container { if (!Container.instance) { Container.instance = new Container(); } return Container.instance; } public static get(name: string): T { return Container.instance.get(name); } }