Skip to main content
Module

x/memoization/memo.ts>memo

Memoization tools, TC39 proposal-function-memo implementation
Latest
function memo
import { memo } from "https://deno.land/x/memoization@1.2.0/memo.ts";

Returns the proxy function whose call is monitored. It calls at most once for each given arguments.

Examples

Example 1

import { memo } from "https://deno.land/x/memoization@$VERSION/memo.ts";

function f(x: number): number {
 console.log(x);
 return x * 2;
}

const fMemo = memo(f);
fMemo(3); // Prints 3 and returns 6.
fMemo(3); // Does not print anything. Returns 6.
fMemo(2); // Prints 2 and returns 4.
fMemo(2); // Does not print anything. Returns 4.
fMemo(3); // Does not print anything. Returns 6.

Either version would work with recursive functions:

Example 2

import { memo } from "https://deno.land/x/memoization@$VERSION/memo.ts";

const fib = memo((num: number): number => {
 if (num < 2) return num;

 return fib(num - 1) + fib(num - 2);
});

fib(1000);

Type Parameters

T extends (...args: any) => any

Parameters

fn: T
optional
cache: MapLike<object, ReturnType<T>>
optional
keying: (args: Parameters<T>) => unknown[]

Type Parameters

T extends new (...args: any) => any

Parameters

fn: T
optional
cache: MapLike<object, InstanceType<T>>
optional
keying: (args: ConstructorParameters<T>) => unknown[]