super-utils-plus
Version:
A superior alternative to Lodash with improved performance, TypeScript support, and developer experience
42 lines (41 loc) • 1.12 kB
TypeScript
/**
* Creates a function that memoizes the result of `func`. If `resolver` is
* provided, it determines the cache key for storing the result based on the
* arguments provided to the memoized function. By default, the first argument
* provided to the memoized function is used as the map cache key.
*
* @param func - The function to memoize
* @param resolver - The function to resolve the cache key
* @returns The new memoized function
*
* @example
* ```ts
* const object = { 'a': 1, 'b': 2 };
* const other = { 'c': 3, 'd': 4 };
*
* const values = memoize(values);
* values(object);
* // => [1, 2]
*
* values(other);
* // => [3, 4]
*
* object.a = 2;
* values(object);
* // => [1, 2]
*
* // Modify the result cache
* values.cache.set(object, ['a', 'b']);
* values(object);
* // => ['a', 'b']
*
* // Replace `_.memoize.Cache`
* memoize.Cache = WeakMap;
* ```
*/
export declare function memoize<T extends (...args: any[]) => any>(func: T, resolver?: (...args: Parameters<T>) => any): T & {
cache: Map<any, any>;
};
export declare namespace memoize {
var Cache: MapConstructor;
}