diff --git a/types/lodash/common/object.d.ts b/types/lodash/common/object.d.ts index 5e2d539c23..a729140e02 100644 --- a/types/lodash/common/object.d.ts +++ b/types/lodash/common/object.d.ts @@ -2951,6 +2951,22 @@ declare module "../index" { * _.omitBy(object, _.isNumber); * // => { 'b': '2' } */ + omitBy( + object: Dictionary | null | undefined, + predicate?: ValueKeyIteratee + ): Dictionary; + + /** + * @see _.omitBy + */ + omitBy( + object: NumericDictionary | null | undefined, + predicate?: ValueKeyIteratee + ): NumericDictionary; + + /** + * @see _.omitBy + */ omitBy( object: T | null | undefined, predicate: ValueKeyIteratee @@ -2958,6 +2974,22 @@ declare module "../index" { } interface LoDashImplicitWrapper { + /** + * @see _.omitBy + */ + omitBy( + this: LoDashImplicitWrapper | null | undefined>, + predicate?: ValueKeyIteratee + ): LoDashImplicitWrapper>; + + /** + * @see _.omitBy + */ + omitBy( + this: LoDashImplicitWrapper | null | undefined>, + predicate?: ValueKeyIteratee + ): LoDashImplicitWrapper>; + /** * @see _.omitBy */ @@ -2968,6 +3000,22 @@ declare module "../index" { } interface LoDashExplicitWrapper { + /** + * @see _.omitBy + */ + omitBy( + this: LoDashExplicitWrapper | null | undefined>, + predicate?: ValueKeyIteratee + ): LoDashExplicitWrapper>; + + /** + * @see _.omitBy + */ + omitBy( + this: LoDashExplicitWrapper | null | undefined>, + predicate?: ValueKeyIteratee + ): LoDashExplicitWrapper>; + /** * @see _.omitBy */ @@ -3063,6 +3111,22 @@ declare module "../index" { * _.pickBy(object, _.isNumber); * // => { 'a': 1, 'c': 3 } */ + pickBy( + object: Dictionary | null | undefined, + predicate?: ValueKeyIteratee + ): Dictionary; + + /** + * @see _.pickBy + */ + pickBy( + object: NumericDictionary | null | undefined, + predicate?: ValueKeyIteratee + ): NumericDictionary; + + /** + * @see _.pickBy + */ pickBy( object: T | null | undefined, predicate?: ValueKeyIteratee @@ -3070,6 +3134,22 @@ declare module "../index" { } interface LoDashImplicitWrapper { + /** + * @see _.pickBy + */ + pickBy( + this: LoDashImplicitWrapper | null | undefined>, + predicate?: ValueKeyIteratee + ): LoDashImplicitWrapper>; + + /** + * @see _.pickBy + */ + pickBy( + this: LoDashImplicitWrapper | null | undefined>, + predicate?: ValueKeyIteratee + ): LoDashImplicitWrapper>; + /** * @see _.pickBy */ @@ -3080,6 +3160,22 @@ declare module "../index" { } interface LoDashExplicitWrapper { + /** + * @see _.pickBy + */ + pickBy( + this: LoDashExplicitWrapper | null | undefined>, + predicate?: ValueKeyIteratee + ): LoDashExplicitWrapper>; + + /** + * @see _.pickBy + */ + pickBy( + this: LoDashExplicitWrapper | null | undefined>, + predicate?: ValueKeyIteratee + ): LoDashExplicitWrapper>; + /** * @see _.pickBy */ diff --git a/types/lodash/fp.d.ts b/types/lodash/fp.d.ts index c799bd734b..2185fbf4aa 100644 --- a/types/lodash/fp.d.ts +++ b/types/lodash/fp.d.ts @@ -2289,11 +2289,21 @@ declare namespace _ { } interface LodashOmitBy { (predicate: lodash.ValueKeyIteratee): LodashOmitBy1x1; - (predicate: lodash.__, object: T | null | undefined): LodashOmitBy1x2; + (predicate: lodash.__, object: lodash.Dictionary | null | undefined): LodashOmitBy1x2; + (predicate: lodash.ValueKeyIteratee, object: lodash.Dictionary | null | undefined): lodash.Dictionary; + (predicate: lodash.__, object: lodash.NumericDictionary | null | undefined): LodashOmitBy2x2; + (predicate: lodash.ValueKeyIteratee, object: lodash.NumericDictionary | null | undefined): lodash.NumericDictionary; + (predicate: lodash.__, object: T | null | undefined): LodashOmitBy3x2; (predicate: lodash.ValueKeyIteratee, object: T | null | undefined): lodash.PartialObject; } - type LodashOmitBy1x1 = (object: T1 | null | undefined) => lodash.PartialObject; - type LodashOmitBy1x2 = (predicate: lodash.ValueKeyIteratee) => lodash.PartialObject; + interface LodashOmitBy1x1 { + (object: lodash.Dictionary | null | undefined): lodash.Dictionary; + (object: lodash.NumericDictionary | null | undefined): lodash.NumericDictionary; + (object: T1 | null | undefined): lodash.PartialObject; + } + type LodashOmitBy1x2 = (predicate: lodash.ValueKeyIteratee) => lodash.Dictionary; + type LodashOmitBy2x2 = (predicate: lodash.ValueKeyIteratee) => lodash.NumericDictionary; + type LodashOmitBy3x2 = (predicate: lodash.ValueKeyIteratee) => lodash.PartialObject; type LodashOnce = any>(func: T) => T; interface LodashOrderBy { (iteratees: lodash.Many<(value: T) => lodash.NotVoid>): LodashOrderBy1x1; @@ -2873,11 +2883,21 @@ declare namespace _ { type LodashPick2x2 = (props: lodash.PropertyPath) => lodash.PartialDeep; interface LodashPickBy { (predicate: lodash.ValueKeyIteratee): LodashPickBy1x1; - (predicate: lodash.__, object: T | null | undefined): LodashPickBy1x2; + (predicate: lodash.__, object: lodash.Dictionary | null | undefined): LodashPickBy1x2; + (predicate: lodash.ValueKeyIteratee, object: lodash.Dictionary | null | undefined): lodash.Dictionary; + (predicate: lodash.__, object: lodash.NumericDictionary | null | undefined): LodashPickBy2x2; + (predicate: lodash.ValueKeyIteratee, object: lodash.NumericDictionary | null | undefined): lodash.NumericDictionary; + (predicate: lodash.__, object: T | null | undefined): LodashPickBy3x2; (predicate: lodash.ValueKeyIteratee, object: T | null | undefined): lodash.PartialObject; } - type LodashPickBy1x1 = (object: T1 | null | undefined) => lodash.PartialObject; - type LodashPickBy1x2 = (predicate: lodash.ValueKeyIteratee) => lodash.PartialObject; + interface LodashPickBy1x1 { + (object: lodash.Dictionary | null | undefined): lodash.Dictionary; + (object: lodash.NumericDictionary | null | undefined): lodash.NumericDictionary; + (object: T1 | null | undefined): lodash.PartialObject; + } + type LodashPickBy1x2 = (predicate: lodash.ValueKeyIteratee) => lodash.Dictionary; + type LodashPickBy2x2 = (predicate: lodash.ValueKeyIteratee) => lodash.NumericDictionary; + type LodashPickBy3x2 = (predicate: lodash.ValueKeyIteratee) => lodash.PartialObject; interface LodashProp { (path: TKey | [TKey]): LodashProp1x1; (path: lodash.__, object: TObject): LodashProp1x2; diff --git a/types/lodash/lodash-tests.ts b/types/lodash/lodash-tests.ts index 88a5a88bfc..bc6084a005 100644 --- a/types/lodash/lodash-tests.ts +++ b/types/lodash/lodash-tests.ts @@ -5561,13 +5561,23 @@ fp.now(); // $ExpectType number // _.omitBy { const obj: AbcObject | null | undefined = anything; + const dictionary: _.Dictionary | null | undefined = anything; + const numericDictionary: _.NumericDictionary | null | undefined = anything; const predicate = (element: string | number | boolean, key: string) => true; + const predicate2 = (element: boolean, key: string) => true; _.omitBy(obj, predicate); // $ExpectType Partial + _.omitBy(dictionary, predicate2); // $ExpectType Dictionary + _.omitBy(numericDictionary, predicate2); // $ExpectType NumericDictionary _(obj).omitBy(predicate); // $ExpectType LoDashImplicitWrapper> + _(dictionary).omitBy(predicate2); // $ExpectType LoDashImplicitWrapper> + _(numericDictionary).omitBy(predicate2); // $ExpectType LoDashImplicitWrapper> _.chain(obj).omitBy(predicate); // $ExpectType LoDashExplicitWrapper> + _.chain(dictionary).omitBy(predicate2); // $ExpectType LoDashExplicitWrapper> + _.chain(numericDictionary).omitBy(predicate2); // $ExpectType LoDashExplicitWrapper> fp.omitBy(predicate, obj); // $ExpectType Partial - fp.omitBy(predicate)(obj); // $ExpectType Partial + fp.omitBy(predicate2)(dictionary); // $ExpectType Dictionary + fp.omitBy(predicate2)(numericDictionary); // $ExpectType NumericDictionary } // _.pick @@ -5584,8 +5594,10 @@ fp.now(); // $ExpectType number _.pick(obj1, readonlyArray); // $ExpectType PartialDeep // Broken in TS 2.4 // _.pick(obj2, "a", "b"); // Pick - _.pick(obj2, literalsArray); // $ExpectType Pick - _.pick(obj2, roLiteralsArray); // $ExpectType Pick + // We can't use ExpectType here because typescript keeps changing what order the types appear. + let result1: Pick; + result1 = _.pick(obj2, literalsArray); + result1 = _.pick(obj2, roLiteralsArray); _(obj1).pick("a"); // $ExpectType LoDashImplicitWrapper> _(obj1).pick(0, "a"); // $ExpectType LoDashImplicitWrapper> @@ -5593,8 +5605,9 @@ fp.now(); // $ExpectType number _(obj1).pick(readonlyArray); // $ExpectType LoDashImplicitWrapper> // Broken in TS 2.4 // _(obj2).pick("a", "b"); // LoDashImplicitWrapper> - _(obj2).pick(literalsArray); // $ExpectType LoDashImplicitWrapper> - _(obj2).pick(roLiteralsArray); // $ExpectType LoDashImplicitWrapper> + let result2: _.LoDashImplicitWrapper>; + result2 = _(obj2).pick(literalsArray); + result2 = _(obj2).pick(roLiteralsArray); _.chain(obj1).pick("a"); // $ExpectType LoDashExplicitWrapper> _.chain(obj1).pick(0, "a"); // $ExpectType LoDashExplicitWrapper> @@ -5602,24 +5615,35 @@ fp.now(); // $ExpectType number _.chain(obj1).pick(readonlyArray); // $ExpectType LoDashExplicitWrapper> // Broken in TS 2.4 // _.chain(obj2).pick("a", "b"); // LoDashExplicitWrapper> - _.chain(obj2).pick(literalsArray); // $ExpectType LoDashExplicitWrapper> - _.chain(obj2).pick(roLiteralsArray); // $ExpectType LoDashExplicitWrapper> + let result3: _.LoDashExplicitWrapper>; + result3 = _.chain(obj2).pick(literalsArray); + result3 = _.chain(obj2).pick(roLiteralsArray); fp.pick("a", obj2); // $ExpectType Pick fp.pick("a")(obj2); // $ExpectType Pick - fp.pick(literalsArray)(obj2); // $ExpectType Pick + result1 = fp.pick(literalsArray)(obj2); } // _.pickBy { const obj: AbcObject | null | undefined = anything; + const dictionary: _.Dictionary | null | undefined = anything; + const numericDictionary: _.NumericDictionary | null | undefined = anything; const predicate = (element: string | number | boolean, key: string) => true; + const predicate2 = (element: boolean, key: string) => true; _.pickBy(obj, predicate); // $ExpectType Partial + _.pickBy(dictionary, predicate2); // $ExpectType Dictionary + _.pickBy(numericDictionary, predicate2); // $ExpectType NumericDictionary _(obj).pickBy(predicate); // $ExpectType LoDashImplicitWrapper> + _(dictionary).pickBy(predicate2); // $ExpectType LoDashImplicitWrapper> + _(numericDictionary).pickBy(predicate2); // $ExpectType LoDashImplicitWrapper> _.chain(obj).pickBy(predicate); // $ExpectType LoDashExplicitWrapper> + _.chain(dictionary).pickBy(predicate2); // $ExpectType LoDashExplicitWrapper> + _.chain(numericDictionary).pickBy(predicate2); // $ExpectType LoDashExplicitWrapper> fp.pickBy(predicate, obj); // $ExpectType Partial - fp.pickBy(predicate)(obj); // $ExpectType Partial + fp.pickBy(predicate2)(dictionary); // $ExpectType Dictionary + fp.pickBy(predicate2)(numericDictionary); // $ExpectType NumericDictionary } // _.result diff --git a/types/lowdb/_lodash.d.ts b/types/lowdb/_lodash.d.ts index a7d2c424f0..862e8d39bd 100644 --- a/types/lowdb/_lodash.d.ts +++ b/types/lowdb/_lodash.d.ts @@ -1273,6 +1273,14 @@ declare module "./index" { this: LoDashExplicitSyncWrapper, ...paths: Array<_.Many<_.PropertyName>> ): LoDashExplicitSyncWrapper<_.PartialObject>; + omitBy( + this: LoDashExplicitSyncWrapper<_.Dictionary | null | undefined>, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + omitBy( + this: LoDashExplicitSyncWrapper<_.NumericDictionary | null | undefined>, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitSyncWrapper<_.NumericDictionary>; omitBy( this: LoDashExplicitSyncWrapper, predicate: _.ValueKeyIteratee @@ -1285,6 +1293,14 @@ declare module "./index" { this: LoDashExplicitSyncWrapper, ...props: _.PropertyPath[] ): LoDashExplicitSyncWrapper<_.PartialObject>; + pickBy( + this: LoDashExplicitSyncWrapper<_.Dictionary | null | undefined>, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + pickBy( + this: LoDashExplicitSyncWrapper<_.NumericDictionary | null | undefined>, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitSyncWrapper<_.NumericDictionary>; pickBy( this: LoDashExplicitSyncWrapper, predicate?: _.ValueKeyIteratee @@ -2841,6 +2857,14 @@ declare module "./index" { this: LoDashExplicitAsyncWrapper, ...paths: Array<_.Many<_.PropertyName>> ): LoDashExplicitAsyncWrapper<_.PartialObject>; + omitBy( + this: LoDashExplicitAsyncWrapper<_.Dictionary | null | undefined>, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + omitBy( + this: LoDashExplicitAsyncWrapper<_.NumericDictionary | null | undefined>, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitAsyncWrapper<_.NumericDictionary>; omitBy( this: LoDashExplicitAsyncWrapper, predicate: _.ValueKeyIteratee @@ -2853,6 +2877,14 @@ declare module "./index" { this: LoDashExplicitAsyncWrapper, ...props: _.PropertyPath[] ): LoDashExplicitAsyncWrapper<_.PartialObject>; + pickBy( + this: LoDashExplicitAsyncWrapper<_.Dictionary | null | undefined>, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + pickBy( + this: LoDashExplicitAsyncWrapper<_.NumericDictionary | null | undefined>, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitAsyncWrapper<_.NumericDictionary>; pickBy( this: LoDashExplicitAsyncWrapper, predicate?: _.ValueKeyIteratee