From 06593704d499a5bd04cc126526f75dc235d990fc Mon Sep 17 00:00:00 2001 From: Ilya Mochalov Date: Sat, 25 Jul 2015 14:27:18 +0500 Subject: [PATCH] lodash: added _.defaultsDeep() method --- lodash/lodash-tests.ts | 12 ++++++++++++ lodash/lodash.d.ts | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/lodash/lodash-tests.ts b/lodash/lodash-tests.ts index 627dda565..8ab1e8fd4 100644 --- a/lodash/lodash-tests.ts +++ b/lodash/lodash-tests.ts @@ -896,6 +896,18 @@ var foodDefaults = { 'name': 'apple' }; result = _.defaults(foodDefaults, { 'name': 'banana', 'type': 'fruit' }); result = <_.LoDashObjectWrapper>_(foodDefaults).defaults({ 'name': 'banana', 'type': 'fruit' }); +//_.defaultsDeep +interface DefaultsDeepResult { + user: { + name: string; + age: number; + } +} +var TestDefaultsDeepObject = {'user': {'name': 'barney'}}; +var TestDefaultsDeepSource = {'user': {'name': 'fred', 'age': 36}}; +result = _.defaultsDeep(TestDefaultsDeepObject, TestDefaultsDeepSource); +result = _(TestDefaultsDeepObject).defaultsDeep(TestDefaultsDeepSource).value(); + result = _.findKey({ 'a': 1, 'b': 2, 'c': 3, 'd': 4 }, function (num) { return num % 2 == 0; }); diff --git a/lodash/lodash.d.ts b/lodash/lodash.d.ts index 7bc1df648..bac25ad62 100644 --- a/lodash/lodash.d.ts +++ b/lodash/lodash.d.ts @@ -5564,6 +5564,26 @@ declare module _ { defaults(...sources: any[]): LoDashObjectWrapper } + //_.defaultsDeep + interface LoDashStatic { + /** + * This method is like _.defaults except that it recursively assigns default properties. + * @param object The destination object. + * @param sources The source objects. + * @return Returns object. + **/ + defaultsDeep( + object: T, + ...sources: any[]): TResult; + } + + interface LoDashObjectWrapper { + /** + * @see _.defaultsDeep + **/ + defaultsDeep(...sources: any[]): LoDashObjectWrapper + } + //_.findKey interface LoDashStatic { /**