once
Ensure a function is only called once, returning the cached result.
#async
#utility
#singleton
export const once = <T extends (...args: unknown[]) => unknown>(fn: T) => { let called = false; let value: ReturnType<T>; return (...args: Parameters<T>): ReturnType<T> => { if (!called) { called = true; value = fn(...args) as ReturnType<T>; } return value; };};
// Usageconst initialize = once(() => { console.log('Initializing...'); return { ready: true };});
initialize(); // Initializing... { ready: true }initialize(); // { ready: true } (cached, no log)