type MemoizedFunction = (...args: any[]) => T; export function memoize(func: (...args: any[]) => T): MemoizedFunction { const cache = new Map(); return (...args: any[]): T => { const key = JSON.stringify(args); if (cache.has(key)) { return cache.get(key)!; } const result = func(...args); cache.set(key, result); return result; }; }