diff --git a/lodash/lodash-3.10.d.ts b/lodash/lodash-3.10.d.ts index 00f15d254..aca22c97d 100644 --- a/lodash/lodash-3.10.d.ts +++ b/lodash/lodash-3.10.d.ts @@ -9601,16 +9601,17 @@ declare module _ { * @param resolver The function to resolve the cache key. * @return Returns the new memoizing function. */ - memoize( - func: Function, - resolver?: Function): TResult; + memoize: { + (func: T, resolver?: Function): T & MemoizedFunction; + Cache: MapCache; + } } interface LoDashImplicitObjectWrapper { /** * @see _.memoize */ - memoize(resolver?: Function): LoDashImplicitObjectWrapper; + memoize(resolver?: Function): LoDashImplicitObjectWrapper; } //_.modArgs diff --git a/lodash/lodash-tests-3.10.ts b/lodash/lodash-tests-3.10.ts index 59f246172..4c48279ea 100644 --- a/lodash/lodash-tests-3.10.ts +++ b/lodash/lodash-tests-3.10.ts @@ -5959,17 +5959,28 @@ module TestFlowRight { } // _.memoize -var testMemoizedFunction: _.MemoizedFunction; -result = <_.MapCache>testMemoizedFunction.cache; -interface TestMemoizedResultFn extends _.MemoizedFunction { - (...args: any[]): any; +namespace TestMemoize { + var testMemoizedFunction: _.MemoizedFunction; + var cache = <_.MapCache>testMemoizedFunction.cache; + interface TestMemoizedResultFn extends _.MemoizedFunction { + (a1: string, a2: number): boolean; + } + var testMemoizeFn = (a1: string, a2: number) => a1.length > a2; + var testMemoizeResolverFn = (a1: string, a2: number) => a1 + a2; + var result: TestMemoizedResultFn; + result = _.memoize(testMemoizeFn); + result = _.memoize(testMemoizeFn, testMemoizeResolverFn); + result = _(testMemoizeFn).memoize().value(); + result = _(testMemoizeFn).memoize(testMemoizeResolverFn).value(); + result('foo', 1); + result.cache.get('foo1'); + _.memoize.Cache = { + delete: key => false, + get: key => undefined, + has: key => false, + set(key, value) { return this; } + }; } -var testMemoizeFn: (...args: any[]) => any; -var testMemoizeResolverFn: (...args: any[]) => any; -result = _.memoize(testMemoizeFn); -result = _.memoize(testMemoizeFn, testMemoizeResolverFn); -result = (_(testMemoizeFn).memoize().value()); -result = (_(testMemoizeFn).memoize(testMemoizeResolverFn).value()); // _.modArgs module TestModArgs { diff --git a/lodash/lodash-tests.ts b/lodash/lodash-tests.ts index a7d3a72b8..fc8db4dcd 100644 --- a/lodash/lodash-tests.ts +++ b/lodash/lodash-tests.ts @@ -5201,17 +5201,28 @@ module TestFlowRight { } // _.memoize -var testMemoizedFunction: _.MemoizedFunction; -result = <_.MapCache>testMemoizedFunction.cache; -interface TestMemoizedResultFn extends _.MemoizedFunction { - (...args: any[]): any; +namespace TestMemoize { + var testMemoizedFunction: _.MemoizedFunction; + var cache = <_.MapCache>testMemoizedFunction.cache; + interface TestMemoizedResultFn extends _.MemoizedFunction { + (a1: string, a2: number): boolean; + } + var testMemoizeFn = (a1: string, a2: number) => a1.length > a2; + var testMemoizeResolverFn = (a1: string, a2: number) => a1 + a2; + var result: TestMemoizedResultFn; + result = _.memoize(testMemoizeFn); + result = _.memoize(testMemoizeFn, testMemoizeResolverFn); + result = _(testMemoizeFn).memoize().value(); + result = _(testMemoizeFn).memoize(testMemoizeResolverFn).value(); + result('foo', 1); + result.cache.get('foo1'); + _.memoize.Cache = { + delete: key => false, + get: key => undefined, + has: key => false, + set(key, value) { return this; } + }; } -var testMemoizeFn: (...args: any[]) => any; -var testMemoizeResolverFn: (...args: any[]) => any; -result = _.memoize(testMemoizeFn); -result = _.memoize(testMemoizeFn, testMemoizeResolverFn); -result = (_(testMemoizeFn).memoize().value()); -result = (_(testMemoizeFn).memoize(testMemoizeResolverFn).value()); // _.overArgs module TestOverArgs { diff --git a/lodash/lodash.d.ts b/lodash/lodash.d.ts index e5f938b54..d18244be4 100644 --- a/lodash/lodash.d.ts +++ b/lodash/lodash.d.ts @@ -8987,16 +8987,17 @@ declare module _ { * @param resolver The function to resolve the cache key. * @return Returns the new memoizing function. */ - memoize( - func: Function, - resolver?: Function): TResult; + memoize: { + (func: T, resolver?: Function): T & MemoizedFunction; + Cache: MapCache; + } } interface LoDashImplicitObjectWrapper { /** * @see _.memoize */ - memoize(resolver?: Function): LoDashImplicitObjectWrapper; + memoize(resolver?: Function): LoDashImplicitObjectWrapper; } //_.overArgs (was _.modArgs)