UNPKG

@mcdevsl/superset-ui

Version:
19 lines (15 loc) 389 B
interface ClassInterface<T, Args extends unknown[]> { new (...args: Args): T; } export default function makeSingleton<T, Args extends unknown[]>( BaseClass: ClassInterface<T, Args>, ...args: Args ): () => T { let singleton: T; return function getInstance() { if (!singleton) { singleton = new BaseClass(...args); } return singleton; }; }