Skip to content

memoize() function

計算結果をMapに保存する新しい関数を作成します。同じ入力で関数が再度呼び出されると、再計算する代わりにキャッシュされた結果を取得します。resolver が提供された場合、メモ化された関数に提供された引数に基づいて結果を保存するためのキャッシュキーを決定します。デフォルトでは、メモ化された関数に提供された最初の引数がマップキャッシュキーとして使用されます。

Signature:

typescript
declare function memoize<
  F extends (...args: any[]) => any,
  K extends Parameters<F>[0],
  Return extends F & {
    cache: K extends object ? WeakMap<K, ReturnType<F>> : Map<K, ReturnType<F>>;
  },
>(f: F): Return;

Example

ts
const add10 = (a: number): number => a + 10;

const memoized = memoize(add10);
console.log(memoized(5)); // 15
console.log(memoized(10)); // 20
console.log(memoized(5)); // 15 (cached)

memoized.cache.clear(); // clear cache
console.log(memoized(5)); // 15 (no cache)

Open Source Code

Released under the Apache-2.0 License.