UNPKG

@studiometa/js-toolkit

Version:

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

21 lines (20 loc) • 602 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. */ export declare function memoize<T extends (...args: unknown[]) => unknown>(fn: T, { maxAge, cacheKey, cache, }?: MemoizeOptions<ReturnType<T>>): (...args: Parameters<T>) => ReturnType<T>;