diff --git a/types/lodash/common/util.d.ts b/types/lodash/common/util.d.ts index 8ca1e1b795..99cc5a92e5 100644 --- a/types/lodash/common/util.d.ts +++ b/types/lodash/common/util.d.ts @@ -968,6 +968,10 @@ declare module "../index" { * @param predicates The predicates to check. * @return Returns the new function. */ + overEvery( + a: (arg: T) => arg is Result1, + b: (arg: T) => arg is Result2 + ): (arg: T) => Result1 & Result2; overEvery(...predicates: Array boolean>>): (...args: T[]) => boolean; } @@ -995,6 +999,10 @@ declare module "../index" { * @param predicates The predicates to check. * @return Returns the new function. */ + overSome( + a: (arg: T) => arg is Result1, + b: (arg: T) => arg is Result2 + ): (arg: T) => Result1 | Result2; overSome(...predicates: Array boolean>>): (...args: T[]) => boolean; } diff --git a/types/lodash/lodash-tests.ts b/types/lodash/lodash-tests.ts index 9a6eaa5b39..718dc8e9c9 100644 --- a/types/lodash/lodash-tests.ts +++ b/types/lodash/lodash-tests.ts @@ -6841,6 +6841,11 @@ fp.now(); // $ExpectType number // _.overEvery // _.overSome { + const userDefinedTypeGuard1: (item: object) => item is { a: 1 } = anything; + const userDefinedTypeGuard2: (item: object) => item is { b: 1 } = anything; + + _.overEvery(userDefinedTypeGuard1, userDefinedTypeGuard2); // $ExpectType (arg: object) => { a: 1; } & { b: 1; } + _.overEvery((number: number) => true); // $ExpectType (...args: number[]) => boolean _.overEvery((number: number) => true, (number: number) => true); // $ExpectType (...args: number[]) => boolean _.overEvery([(number: number) => true]); // $ExpectType (...args: number[]) => boolean @@ -6857,6 +6862,8 @@ fp.now(); // $ExpectType number fp.overEvery((number: number) => true); // $ExpectType (...args: number[]) => boolean fp.overEvery([(number: number) => true, (number: number) => true]); // $ExpectType (...args: number[]) => boolean + _.overSome(userDefinedTypeGuard1, userDefinedTypeGuard2); // $ExpectType (arg: object) => { a: 1; } | { b: 1; } + _.overSome((number: number) => true); // $ExpectType (...args: number[]) => boolean _.overSome((number: number) => true, (number: number) => true); // $ExpectType (...args: number[]) => boolean _.overSome([(number: number) => true]); // $ExpectType (...args: number[]) => boolean diff --git a/types/lodash/ts3.1/common/util.d.ts b/types/lodash/ts3.1/common/util.d.ts index fd624339ce..68195cb7ea 100644 --- a/types/lodash/ts3.1/common/util.d.ts +++ b/types/lodash/ts3.1/common/util.d.ts @@ -752,6 +752,10 @@ declare module "../index" { * @param predicates The predicates to check. * @return Returns the new function. */ + overEvery(...predicates: [ + (arg: T) => arg is Result1, + (arg: T) => arg is Result2 + ]): (arg: T) => Result1 & Result2; overEvery(...predicates: Array boolean>>): (...args: T[]) => boolean; } interface Collection { @@ -787,6 +791,10 @@ declare module "../index" { * @param predicates The predicates to check. * @return Returns the new function. */ + overSome(...predicates: [ + (arg: T) => arg is Result1, + (arg: T) => arg is Result2 + ]): (arg: T) => Result1 | Result2; overSome(...predicates: Array boolean>>): (...args: T[]) => boolean; } interface Collection {