From 2a4851a2d3527395862adc621371c8ac63672f2a Mon Sep 17 00:00:00 2001 From: Romke van der Meulen Date: Thu, 19 Oct 2017 11:31:15 +0200 Subject: [PATCH 1/3] fix(element): correct typing of method map() The elementFinder and index arguments of the mapping function passed to ElementArrayFinder.map() will never be undefined. Fixes #4548 --- lib/element.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/element.ts b/lib/element.ts index ee6d3d5af..dc5ae97ef 100644 --- a/lib/element.ts +++ b/lib/element.ts @@ -650,10 +650,10 @@ export class ElementArrayFinder extends WebdriverWebElement { * @returns {!webdriver.promise.Promise} A promise that resolves to an array * of values returned by the map function. */ - map(mapFn: (elementFinder?: ElementFinder, index?: number) => T | any): + map(mapFn: (elementFinder: ElementFinder, index: number) => T | any): wdpromise.Promise { return this.asElementFinders_().then((arr: ElementFinder[]) => { - let list = arr.map((elementFinder?: ElementFinder, index?: number) => { + let list = arr.map((elementFinder: ElementFinder, index: number) => { let mapResult = mapFn(elementFinder, index); // All nested arrays and objects will also be fully resolved. return wdpromise.fullyResolved(mapResult) as wdpromise.Promise; From e3db1b1865633355cc50972548af3ba5e4016ecd Mon Sep 17 00:00:00 2001 From: Romke van der Meulen Date: Thu, 19 Oct 2017 12:33:29 +0200 Subject: [PATCH 2/3] chore(element): fix linting error --- lib/element.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/element.ts b/lib/element.ts index dc5ae97ef..e55965ff4 100644 --- a/lib/element.ts +++ b/lib/element.ts @@ -650,8 +650,7 @@ export class ElementArrayFinder extends WebdriverWebElement { * @returns {!webdriver.promise.Promise} A promise that resolves to an array * of values returned by the map function. */ - map(mapFn: (elementFinder: ElementFinder, index: number) => T | any): - wdpromise.Promise { + map(mapFn: (elementFinder: ElementFinder, index: number) => T | any): wdpromise.Promise { return this.asElementFinders_().then((arr: ElementFinder[]) => { let list = arr.map((elementFinder: ElementFinder, index: number) => { let mapResult = mapFn(elementFinder, index); From 96b2e553982d73af90a8f2088e7c23556cc7eef0 Mon Sep 17 00:00:00 2001 From: Romke van der Meulen Date: Thu, 19 Oct 2017 16:17:10 +0200 Subject: [PATCH 3/3] fix(element): correct return type of mapFn Broadening the scope of the return type to any is not necessary: any return type will be supported by T. Fixes #4551. --- lib/element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/element.ts b/lib/element.ts index e55965ff4..408f870d1 100644 --- a/lib/element.ts +++ b/lib/element.ts @@ -650,7 +650,7 @@ export class ElementArrayFinder extends WebdriverWebElement { * @returns {!webdriver.promise.Promise} A promise that resolves to an array * of values returned by the map function. */ - map(mapFn: (elementFinder: ElementFinder, index: number) => T | any): wdpromise.Promise { + map(mapFn: (elementFinder: ElementFinder, index: number) => T): wdpromise.Promise { return this.asElementFinders_().then((arr: ElementFinder[]) => { let list = arr.map((elementFinder: ElementFinder, index: number) => { let mapResult = mapFn(elementFinder, index);