DefinitelyTyped/types/memoizee/memoizee-tests.ts
Igor Savin 355ee52e9b [@types/memoizee] More accurate types for normalizer option (#38060)
* Improve typings for `normalizer` memoizee option

* Fix build

* Fix test
2019-09-06 17:46:17 -07:00

62 lines
1.6 KiB
TypeScript

import memoize = require('memoizee');
const fn = (one: string, two?: number, three?: any) => { /* ... */ };
let memoized = memoize(fn);
memoized('foo', 3, 'bar');
memoized('foo', 3, 'bar');
memoized = memoize(fn, { length: 2 });
memoized('foo');
memoized('foo', undefined);
memoized('foo', 3, {});
memoized('foo', 3, 13);
memoized('foo', undefined);
memoized('foo', undefined);
memoized('foo', 3, {});
memoized('foo', 3, 13);
memoized('foo', 3, 13);
memoized = memoize(fn, { primitive: true });
memoized('/path/one');
memoized('/path/one');
memoized = memoize(fn, { dispose(value: number) { /*…*/ } });
const foo3 = memoized('foo', 3);
const bar7 = memoized('bar', 7);
memoized.clear('foo', 3); // Dispose called with foo3 value
memoized.clear('bar', 7); // Dispose called with bar7 value
memoized.delete('foo', 0);
const mFn = memoize((hash: any) => {
// body of memoized function
}, { normalizer: (args: any[]) => {
// args is arguments object as accessible in memoized function
return JSON.stringify(args[0]);
} });
mFn({ foo: 'bar' });
memoized = memoize(fn, { length: 2, resolvers: [String, Boolean] });
memoized(String(12), [1, 2, 3].length);
memoized("12", Number(true));
memoized(String({ toString() { return "12"; } }), Number({}));
{
const afn = (a: number, b: number) => {
return new Promise(res => { res(a + b); });
};
const memoized = memoize(afn, { promise: true });
memoized(3, 7);
memoized(3, 7);
}
memoized = memoize(fn, { maxAge: 1000, preFetch: 0.6 });
memoized('foo', 3);
memoized('foo', 3);
setTimeout(() => {
memoized('foo', 3);
}, 500);
setTimeout(() => {
memoized('foo', 3);
}, 1300);