@mcdevsl/superset-ui
Version:
19 lines (15 loc) • 389 B
text/typescript
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;
};
}