From 324d049ad8b99f46095964dd85fcc62bfdb75c78 Mon Sep 17 00:00:00 2001 From: Regev Brody Date: Wed, 12 Jun 2019 23:05:41 +0300 Subject: [PATCH] underscore - add typing to pick (#35977) * add typing to underscore pick * add typing to underscore pick * add typing to underscore pick * add typing to underscore pick --- types/underscore/index.d.ts | 7 ++++--- types/underscore/underscore-tests.ts | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/types/underscore/index.d.ts b/types/underscore/index.d.ts index d38cab453d..c23f96f8ab 100644 --- a/types/underscore/index.d.ts +++ b/types/underscore/index.d.ts @@ -6,6 +6,7 @@ // Ard Timmerman , // Julian Gonggrijp , // Florian Keller +// Regev Brody // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 @@ -3710,9 +3711,9 @@ declare module _ { * @keys The key/value pairs to keep on `object`. * @return Copy of `object` with only the `keys` properties. **/ - pick( - object: any, - ...keys: any[]): any; + pick(obj: T, ...keys: K[]): Pick; + pick(obj: T, keys: K[]): Pick; + pick(obj: T, predicate: ObjectIterator): Pick; /** * @see _.pick diff --git a/types/underscore/underscore-tests.ts b/types/underscore/underscore-tests.ts index 2f24c650be..564802c780 100644 --- a/types/underscore/underscore-tests.ts +++ b/types/underscore/underscore-tests.ts @@ -340,7 +340,13 @@ _.functions(_); _.extend({ name: 'moe' }, { age: 50 }); _.extendOwn({ name: 'moe'}, { age: 50 }); _.assign({ name: 'moe'}, { age: 50 }); -_.pick({ name: 'moe', age: 50, userid: 'moe1' }, 'name', 'age'); + +_.pick({ name: 'moe', age: 50, userid: 'moe1' }, 'name', 'age').age = 5; +_.pick({ name: 'moe', age: 50, userid: 'moe1' }, ['name', 'age']).age = 5; +_.pick({ name: 'moe', age: 50, userid: 'moe1' }, (value, key) => { + return key === 'name' || key === 'age'; +}).age = 5; + _.omit({ name: 'moe', age: 50, userid: 'moe1' }, 'name'); _.omit({ name: 'moe', age: 50, userid: 'moe1' }, 'name', 'age'); _.omit({ name: 'moe', age: 50, userid: 'moe1' }, ['name', 'age']);