https://github.com/korkje/memz
Memoize helper
https://github.com/korkje/memz
deno memoize typescript
Last synced: about 2 months ago
JSON representation
Memoize helper
- Host: GitHub
- URL: https://github.com/korkje/memz
- Owner: korkje
- License: mit
- Created: 2023-12-12T17:07:22.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-01-31T15:26:09.000Z (over 1 year ago)
- Last Synced: 2025-06-16T14:17:38.817Z (12 months ago)
- Topics: deno, memoize, typescript
- Language: TypeScript
- Homepage:
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license.md
Awesome Lists containing this project
README
# memz [](https://jsr.io/@korkje/memz)
Wrap any function with a cache.
```ts
import memoize from "jsr:@korkje/memz";
const add = memoize((a: number, b: number) => a + b);
```
Recursion:
```ts
const fib = memoize((n: number): number => {
if (n < 2) {
return n;
}
return fib(n - 2) + fib(n - 1);
});
```
Initial cache:
```ts
// Start with 2 and 1, i.e. create the Lucas sequence.
const cache = { "[0]": 2, "[1]": 1 };
const fib = memoize(
(n: number): number => fib(n - 2) + fib(n - 1),
{ cache },
);
```
By default, cache keys are arguments serialized to JSON, hence the `"[0]"` and `"[1]"` keys above.
Custom cache keys:
```ts
const fib = memoize(
(n: number): number => fib(n - 2) + fib(n - 1),
{ keyFn: n => n },
);
```