15 lines
408 B
TypeScript
15 lines
408 B
TypeScript
type ServiceDepencency<T> = new (services: Services) => T;
|
|
class Services {
|
|
#instances: Map<ServiceDepencency<unknown>, unknown> = new Map<ServiceDepencency<unknown>, unknown>();
|
|
|
|
public get<T>(service: ServiceDepencency<T>) {
|
|
if (!this.#instances.has(service)) {
|
|
this.#instances.set(service, new service(this));
|
|
}
|
|
|
|
return this.#instances.get(service) as T;
|
|
}
|
|
}
|
|
|
|
export { Services };
|