diff --git a/memoizee/index.d.ts b/memoizee/index.d.ts index 125b34f264..456641dc59 100644 --- a/memoizee/index.d.ts +++ b/memoizee/index.d.ts @@ -3,47 +3,27 @@ // Definitions by: Juan Picado // 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 { + 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: F, options?: memoizee.Options): F & memoizee.Memoized; export = memoizee; diff --git a/memoizee/memoizee-tests.ts b/memoizee/memoizee-tests.ts index 138a605712..e8e73a2d6a 100644 --- a/memoizee/memoizee-tests.ts +++ b/memoizee/memoizee-tests.ts @@ -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 }); diff --git a/memoizee/tsconfig.json b/memoizee/tsconfig.json index 68b204fbd9..c2ccff1cab 100644 --- a/memoizee/tsconfig.json +++ b/memoizee/tsconfig.json @@ -3,6 +3,7 @@ "module": "commonjs", "target": "es6", "noImplicitAny": true, + "noImplicitThis": true, "strictNullChecks": true, "baseUrl": "../", "typeRoots": [