Map
객체에 Array.join
메서드를 통해 정의한 key
값을 저장해두어 불필요 작업이 실행되지 않도록 한다.
type Fn = (...params: number[]) => number
function memoize(fn: Fn): Fn {
const memo = new Map()
return function(...args) {
const curKey = args.join(",")
if(memo.has(curKey)) return memo.get(curKey)
const result = fn(...args)
memo.set(curKey, result)
return result
}
}