memoizee: Clean up types

This commit is contained in:
Andy Hanson 2016-12-29 14:25:38 -05:00
parent 84e67c4187
commit 87fb535940
3 changed files with 34 additions and 52 deletions

60
memoizee/index.d.ts vendored
View File

@ -3,47 +3,27 @@
// Definitions by: Juan Picado <https://github.com/juanpicado>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/**
* Resolver options
* @interface RevolversArray
*/
interface RevolversArray {
[index: number]: {};
declare namespace memoizee {
interface Options {
length?: number;
maxAge?: number;
max?: number;
preFetch?: number | true;
promise?: boolean;
dispose?: (value: any) => void;
async?: boolean;
primitive?: boolean;
normalizer?: (value: any) => void;
resolvers?: Array<(arg: any) => any>;
}
interface Memoized<F> {
delete: F;
clear: F & (() => void);
}
}
/**
* List of options
* @interface IMemoizeeOptions
*/
interface IMemoizeeOptions {
length?: number;
maxAge?: number;
max?: number;
preFetch?: number;
promise?: boolean;
dispose?: (value: any) => void;
async?: boolean;
primitive?: boolean;
normalizer?: (value: any ) => void;
resolvers?: RevolversArray;
}
/**
* Main interface functions
* @interface IMemoizee
* @extends {Function}
*/
interface IMemoizee extends Function {
delete: (...params: any[]) => void;
clear: (...params: any[]) => void;
}
/**
* Memoize function
* @param {*} f
* @param {IMemoizeeOptions} [options]
* @returns {IMemoizee}
*/
declare function memoizee(f: (...params: any[]) => void, options?: IMemoizeeOptions): IMemoizee;
// tslint:disable:forbidden-types
declare function memoizee<F extends Function>(f: F, options?: memoizee.Options): F & memoizee.Memoized<F>;
export = memoizee;

View File

@ -1,6 +1,6 @@
import memoize = require('memoizee');
var fn = function (one:any, two:any, three:any) { /* ... */ };
var fn = function (one: string, two?: number, three?: any) { /* ... */ };
let memoized = memoize(fn);
memoized('foo', 3, 'bar');
@ -23,7 +23,7 @@ var foo3 = memoized('foo', 3);
var 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', true);
memoized.delete('foo', 0);
var mFn = memoize(function (hash:any) {
// body of memoized function
}, { normalizer: function (args:any) {
@ -34,17 +34,18 @@ var mFn = memoize(function (hash:any) {
mFn({ foo: 'bar' });
memoized = memoize(fn, { length: 2, resolvers: [String, Boolean] });
memoized(12, [1,2,3].length);
memoized("12", true);
memoized({ toString: function () { return "12"; } }, {});
memoized(String(12), [1,2,3].length);
memoized("12", Number(true));
memoized(String({ toString: function () { return "12"; } }), Number({}));
var afn = function (a:number, b:number) {
return new Promise(function (res) { res(a + b); });
};
memoized = memoize(afn, { promise: true });
memoized(3, 7);
memoized(3, 7);
{
var afn = function (a:number, b:number) {
return new Promise(function (res) { res(a + b); });
};
let memoized = memoize(afn, { promise: true });
memoized(3, 7);
memoized(3, 7);
}
memoized = memoize(fn, { maxAge: 1000, preFetch: 0.6 });

View File

@ -3,6 +3,7 @@
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [