メモリキャッシュより速いキャッシュされたオブジェクト
Github
Section titled “Github”https://github.com/mktbsh/misc.ts/blob/main/src/utils/reusable.ts
export interface Reusable<T> { value: T;}
export function reusable<T>(init: () => T): Reusable<T> { return { get value() { const value = init(); Object.defineProperty(this, "value", { value }); return value; }, };}
timestamp.value
で最初に呼び出された時にDateを初期化する。
2回目以降の呼び出しでは生成済みのDateを使いまわすため、時刻が変わらない。
重い処理などで利用する想定。この例は極端。
const timestamp = reusable(() => new Date());
// firstconsole.log(timestamp.value); // 2025-01-18T09:00:00.000Z;
// secondconsole.log(timestamp.value); // 2025-01-18T09:00:00.000Z;