UNPKG

@studiometa/js-toolkit

Version:

A set of useful little bits of JavaScript to boost your project! 🚀

22 lines (21 loc) • 663 B
export interface MemoizeCache<T> { has: (key: unknown) => boolean; set: (key: unknown, value: { data: T; date: number; }) => this; get: (key: unknown) => { data: T; date: number; }; } export interface MemoizeOptions<T> { maxAge?: number; cacheKey?: (args: unknown[]) => string; cache?: MemoizeCache<T>; } /** * Memoize the output of a function. * @link https://js-toolkit.studiometa.dev/utils/memoize.html */ export declare function memoize<T extends (...args: unknown[]) => unknown>(fn: T, { maxAge, cacheKey, cache, }?: MemoizeOptions<ReturnType<T>>): (...args: Parameters<T>) => ReturnType<T>;