@studiometa/js-toolkit
Version:
A set of useful little bits of JavaScript to boost your project! 🚀
21 lines (20 loc) • 602 B
TypeScript
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>;