mirror of
https://github.com/cupcakearmy/svelte-i18n.git
synced 2024-10-05 18:44:46 +02:00
dadeaa2e7f
✅ Closes: Closes #43
15 lines
380 B
TypeScript
15 lines
380 B
TypeScript
type MemoizedFunction = <F extends any>(fn: F) => F
|
|
|
|
const monadicMemoize: MemoizedFunction = fn => {
|
|
const cache = Object.create(null)
|
|
const memoizedFn: any = (arg: unknown) => {
|
|
const cacheKey = JSON.stringify(arg)
|
|
if (cacheKey in cache) {
|
|
return cache[cacheKey]
|
|
}
|
|
return (cache[cacheKey] = fn(arg))
|
|
}
|
|
return memoizedFn
|
|
}
|
|
export { monadicMemoize }
|