- Notifications
You must be signed in to change notification settings - Fork8
License
NotificationsYou must be signed in to change notification settings
github/memoize
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a package which provides amemoize
function, as well as a TypeScriptdecorator which willmemoize a class method.
importmemoizefrom'@github/memoize'constfn=memoize(functiondoExpensiveStuff(){// Here's where you do expensive stuff!})constother=memoize(functiondoExpensiveStuff(){},{cache:newMap(),// pass your own cache implementationhash:JSON.stringify// pass your own hashing implementation})
hash?: (...args: A) => unknown
Provides a single value to use as the Key for the memoization.Defaults toJSON.stringify
(ish).cache?: Map<unknown, R>
The Cache implementation to provide. Must be a Map or Map-alike. Defaults to a Map.Useful for replacing the cache with an LRU cache or similar.
This package also includes a decorator module which can be used to provideTypeScript Decorator annotations to functions.
Here's an example, showing what you need to do:
importmemoizefrom'@github/memoize/decorator'// ^ note: add `/decorator` to the import to get decoratorsclassMyClass{ @memoize()// Memoize the method belowdoThings(){}}constcache=newMap()classMyClass{ @memoize({ cache})// Pass options just like the memoize functiondoThings(){}}
Many memoize implementations exist. This one provides all of the utility we need atGitHub and nothing more. We've used a few various implementations in the past, here are some good ones:
npm installnpm test
Distributed under the MIT license. See LICENSE for details.
About
No description, website, or topics provided.
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors10
Uh oh!
There was an error while loading.Please reload this page.