JS Built-ins
TypeScriptadvanced

Advanced β€” memoize

πŸ“– Usage Example
const memoFib = memoize((n: number): number =>
  n <= 1 ? n : memoFib(n - 1) + memoFib(n - 2)
)
memoFib(10)   // β†’ 55 (cached)

memoize wraps a function in a cache so repeated calls with the same argument skip recomputation.

Advanced: Generic Memoize

Challenge: Implement memoize<T extends unknown[], R>(fn: (...args: T) => R): (...args: T) => R caching results by serialized arguments.

const expensiveFn = memoize((n: number) => n * 2)
expensiveFn(5)  // β†’ 10 (computed)
expensiveFn(5)  // β†’ 10 (cached)
πŸ’‘ Hints (1)
  • β€’ JSON.stringify(args) creates a cache key that handles multiple arguments.