From 74129cffcf34bfe6a417f533a5fe44d8065431cd Mon Sep 17 00:00:00 2001 From: Ilya Mochalov Date: Tue, 22 Mar 2016 22:26:13 +0500 Subject: [PATCH] lodash: changed _.invoke --- lodash/lodash-tests.ts | 91 ++++++++++++++++++++++++++++++------------ lodash/lodash.d.ts | 54 ++++++++++++++++++++----- 2 files changed, 110 insertions(+), 35 deletions(-) diff --git a/lodash/lodash-tests.ts b/lodash/lodash-tests.ts index 425ef6dfb..a27cf7ff1 100644 --- a/lodash/lodash-tests.ts +++ b/lodash/lodash-tests.ts @@ -4366,9 +4366,12 @@ namespace TestKeyBy { //_.invoke namespace TestInvoke { + let boolArray: boolean[] = [true, false]; + let nestedDict: _.Dictionary> = { a: [0, 1, 2] } + let numDict: _.Dictionary = { a: 1, b: 2, @@ -4376,33 +4379,71 @@ namespace TestInvoke { d: 4 } - let result: any; - result = _.invoke(numDict, "a.toString"); - result = _.invoke(numDict, "a.toString", 2); - result = _.invoke(numDict, ["a", "toString"]); - result = _.invoke(numDict, ["a", "toString"], 2); - result = _.invoke>(nestedDict, ["a[0].toString"]); - result = _.invoke>(nestedDict, ["a[0].toString"], 2); - result = _.invoke>(nestedDict, ["a", 0, "toString"]); - result = _.invoke>(nestedDict, ["a", 0, "toString"], 2); + let result: string; - result = _(numDict).invoke("a.toString"); - result = _(numDict).invoke("a.toString", 2); - result = _(numDict).invoke(["a", "toString"]); - result = _(numDict).invoke(["a", "toString"], 2); - result = _(nestedDict).invoke("a[0].toString"); - result = _(nestedDict).invoke("a[0].toString", 2); - result = _(nestedDict).invoke(["a", 0, "toString"]); - result = _(nestedDict).invoke(["a", 0, "toString"], 2); + result = _.invoke(boolArray, "[1]"); + result = _.invoke(boolArray, "[1]", 2); + result = _.invoke(boolArray, [1, "toString"]); + result = _.invoke(boolArray, [1, "toString"], 2); - result = _(numDict).chain().invoke("a.toString"); - result = _(numDict).chain().invoke("a.toString", 2); - result = _(numDict).chain().invoke(["a", "toString"]); - result = _(numDict).chain().invoke(["a", "toString"], 2); - result = _(nestedDict).chain().invoke("a[0].toString"); - result = _(nestedDict).chain().invoke("a[0].toString", 2); - result = _(nestedDict).chain().invoke(["a", 0, "toString"]); - result = _(nestedDict).chain().invoke(["a", 0, "toString"], 2); + result = _.invoke(boolArray, "[1]"); + result = _.invoke(boolArray, "[1]", 2); + result = _.invoke(boolArray, [1, "toString"]); + result = _.invoke(boolArray, [1, "toString"], 2); + + result = _.invoke(numDict, "a.toString"); + result = _.invoke(numDict, "a.toString", 2); + result = _.invoke(numDict, ["a", "toString"]); + result = _.invoke(numDict, ["a", "toString"], 2); + + result = _.invoke(numDict, "a.toString"); + result = _.invoke(numDict, "a.toString", 2); + result = _.invoke(numDict, ["a", "toString"]); + result = _.invoke(numDict, ["a", "toString"], 2); + + result = _.invoke(nestedDict, ["a[0].toString"]); + result = _.invoke(nestedDict, ["a[0].toString"], 2); + result = _.invoke(nestedDict, ["a", 0, "toString"]); + result = _.invoke(nestedDict, ["a", 0, "toString"], 2); + + result = _.invoke, string>(nestedDict, ["a[0].toString"]); + result = _.invoke, string>(nestedDict, ["a[0].toString"], 2); + result = _.invoke, string>(nestedDict, ["a", 0, "toString"]); + result = _.invoke, string>(nestedDict, ["a", 0, "toString"], 2); + + result = _(boolArray).invoke("[1]"); + result = _(boolArray).invoke("[1]", 2); + result = _(boolArray).invoke([1, "toString"]); + result = _(boolArray).invoke([1, "toString"], 2); + + result = _(numDict).invoke("a.toString"); + result = _(numDict).invoke("a.toString", 2); + result = _(numDict).invoke(["a", "toString"]); + result = _(numDict).invoke(["a", "toString"], 2); + + result = _(nestedDict).invoke("a[0].toString"); + result = _(nestedDict).invoke("a[0].toString", 2); + result = _(nestedDict).invoke(["a", 0, "toString"]); + result = _(nestedDict).invoke(["a", 0, "toString"], 2); + + { + let result: _.LoDashExplicitWrapper; + + result = _(boolArray).chain().invoke<_.LoDashExplicitWrapper>("[1]"); + result = _(boolArray).chain().invoke<_.LoDashExplicitWrapper>("[1]", 2); + result = _(boolArray).chain().invoke<_.LoDashExplicitWrapper>([1, "toString"]); + result = _(boolArray).chain().invoke<_.LoDashExplicitWrapper>([1, "toString"], 2); + + result = _(numDict).chain().invoke<_.LoDashExplicitWrapper>("a.toString"); + result = _(numDict).chain().invoke<_.LoDashExplicitWrapper>("a.toString", 2); + result = _(numDict).chain().invoke<_.LoDashExplicitWrapper>(["a", "toString"]); + result = _(numDict).chain().invoke<_.LoDashExplicitWrapper>(["a", "toString"], 2); + + result = _(nestedDict).chain().invoke<_.LoDashExplicitWrapper>("a[0].toString"); + result = _(nestedDict).chain().invoke<_.LoDashExplicitWrapper>("a[0].toString", 2); + result = _(nestedDict).chain().invoke<_.LoDashExplicitWrapper>(["a", 0, "toString"]); + result = _(nestedDict).chain().invoke<_.LoDashExplicitWrapper>(["a", 0, "toString"], 2); + } } //_.invokeMap diff --git a/lodash/lodash.d.ts b/lodash/lodash.d.ts index f8bf3050a..348a8a5ca 100644 --- a/lodash/lodash.d.ts +++ b/lodash/lodash.d.ts @@ -7839,28 +7839,62 @@ declare module _ { * @param path The path of the method to invoke. * @param args The arguments to invoke the method with. **/ - invoke( - object: Dictionary, - path: string | Array, - ...args: any[]): any; + invoke( + object: TObject, + path: StringRepresentable|StringRepresentable[], + ...args: any[]): TResult; + + /** + * @see _.invoke + **/ + invoke( + object: Dictionary|TValue[], + path: StringRepresentable|StringRepresentable[], + ...args: any[]): TResult; + + /** + * @see _.invoke + **/ + invoke( + object: any, + path: StringRepresentable|StringRepresentable[], + ...args: any[]): TResult; + } + + interface LoDashImplicitArrayWrapper { + /** + * @see _.invoke + **/ + invoke( + path: StringRepresentable|StringRepresentable[], + ...args: any[]): TResult; } interface LoDashImplicitObjectWrapper { /** * @see _.invoke **/ - invoke( - path: string | Array, - ...args: any[]): any; + invoke( + path: StringRepresentable|StringRepresentable[], + ...args: any[]): TResult; + } + + interface LoDashExplicitArrayWrapper { + /** + * @see _.invoke + **/ + invoke( + path: StringRepresentable|StringRepresentable[], + ...args: any[]): TResult; } interface LoDashExplicitObjectWrapper { /** * @see _.invoke **/ - invoke( - path: string | Array, - ...args: any[]): any; + invoke( + path: StringRepresentable|StringRepresentable[], + ...args: any[]): TResult; } //_.invokeMap