Merge pull request #6653 from chrootsu/lodash-defaults

lodash: signatures of the method _.defaults have been changed
This commit is contained in:
Masahiro Wakame
2015-11-11 19:00:25 +09:00
2 changed files with 283 additions and 19 deletions
+123 -6
View File
@@ -4510,13 +4510,130 @@ result = <{}>_(testCreateProto).create(testCreateProps).value();
result = <TestCreateProto>_(testCreateProto).create<TestCreateProto>().value();
result = <TestCreateTResult>_(testCreateProto).create<TestCreateTResult>(testCreateProps).value();
interface Food {
name: string;
type: string;
// _.defaults
module TestDefaults {
interface Obj {a: string};
interface S1 {a: number};
interface S2 {b: number};
interface S3 {c: number};
interface S4 {d: number};
interface S5 {e: number};
let obj: Obj;
let s1: S1;
let s2: S2;
let s3: S3;
let s4: S4;
let s5: S5;
{
let result: Obj;
result = _.defaults<Obj>(obj);
}
{
let result: {a: string};
result = _.defaults<Obj, S1, {a: string}>(obj, s1);
}
{
let result: {a: string, b: number};
result = _.defaults<Obj, S1, S2, {a: string, b: number}>(obj, s1, s2);
}
{
let result: {a: string, b: number, c: number};
result = _.defaults<Obj, S1, S2, S3, {a: string, b: number, c: number}>(obj, s1, s2, s3);
}
{
let result: {a: string, b: number, c: number, d: number};
result = _.defaults<Obj, S1, S2, S3, S4, {a: string, b: number, c: number, d: number}>(obj, s1, s2, s3, s4);
}
{
let result: {a: string, b: number, c: number, d: number, e: number};
result = _.defaults<Obj, {a: string, b: number, c: number, d: number, e: number}>(obj, s1, s2, s3, s4, s5);
}
{
let result: _.LoDashImplicitObjectWrapper<Obj>;
result = _(obj).defaults();
}
{
let result: _.LoDashImplicitObjectWrapper<{a: string}>;
result = _(obj).defaults<S1, {a: string}>(s1);
}
{
let result: _.LoDashImplicitObjectWrapper<{a: string, b: number}>;
result = _(obj).defaults<S1, S2, {a: string, b: number}>(s1, s2);
}
{
let result: _.LoDashImplicitObjectWrapper<{a: string, b: number, c: number}>;
result = _(obj).defaults<S1, S2, S3, {a: string, b: number, c: number}>(s1, s2, s3);
}
{
let result: _.LoDashImplicitObjectWrapper<{a: string, b: number, c: number, d: number}>;
result = _(obj).defaults<S1, S2, S3, S4, {a: string, b: number, c: number, d: number}>(s1, s2, s3, s4);
}
{
let result: _.LoDashImplicitObjectWrapper<{a: string, b: number, c: number, d: number, e: number}>;
result = _(obj).defaults<{a: string, b: number, c: number, d: number, e: number}>(s1, s2, s3, s4, s5);
}
{
let result: _.LoDashExplicitObjectWrapper<Obj>;
result = _(obj).chain().defaults();
}
{
let result: _.LoDashExplicitObjectWrapper<{a: string}>;
result = _(obj).chain().defaults<S1, {a: string}>(s1);
}
{
let result: _.LoDashExplicitObjectWrapper<{a: string, b: number}>;
result = _(obj).chain().defaults<S1, S2, {a: string, b: number}>(s1, s2);
}
{
let result: _.LoDashExplicitObjectWrapper<{a: string, b: number, c: number}>;
result = _(obj).chain().defaults<S1, S2, S3, {a: string, b: number, c: number}>(s1, s2, s3);
}
{
let result: _.LoDashExplicitObjectWrapper<{a: string, b: number, c: number, d: number}>;
result = _(obj).chain().defaults<S1, S2, S3, S4, {a: string, b: number, c: number, d: number}>(s1, s2, s3, s4);
}
{
let result: _.LoDashExplicitObjectWrapper<{a: string, b: number, c: number, d: number, e: number}>;
result = _(obj).chain().defaults<{a: string, b: number, c: number, d: number, e: number}>(s1, s2, s3, s4, s5);
}
}
var foodDefaults = { 'name': 'apple' };
result = <Food>_.defaults(foodDefaults, { 'name': 'banana', 'type': 'fruit' });
result = <_.LoDashImplicitObjectWrapper<Food>>_(foodDefaults).defaults({ 'name': 'banana', 'type': 'fruit' });
//_.defaultsDeep
interface DefaultsDeepResult {
+160 -13
View File
@@ -9154,23 +9154,170 @@ declare module _ {
//_.defaults
interface LoDashStatic {
/**
* Assigns own enumerable properties of source object(s) to the destination object for all
* destination properties that resolve to undefined. Once a property is set, additional defaults
* of the same property will be ignored.
* @param object The destination object.
* @param sources The source objects.
* @return The destination object.
**/
defaults<T, TResult>(
object: T,
...sources: any[]): TResult;
* Assigns own enumerable properties of source object(s) to the destination object for all destination
* properties that resolve to undefined. Once a property is set, additional values of the same property are
* ignored.
*
* Note: This method mutates object.
*
* @param object The destination object.
* @param sources The source objects.
* @return The destination object.
*/
defaults<Obj extends {}, TResult extends {}>(
object: Obj,
...sources: {}[]
): TResult;
/**
* @see _.defaults
*/
defaults<Obj extends {}, S1 extends {}, TResult extends {}>(
object: Obj,
source1: S1,
...sources: {}[]
): TResult;
/**
* @see _.defaults
*/
defaults<Obj extends {}, S1 extends {}, S2 extends {}, TResult extends {}>(
object: Obj,
source1: S1,
source2: S2,
...sources: {}[]
): TResult;
/**
* @see _.defaults
*/
defaults<Obj extends {}, S1 extends {}, S2 extends {}, S3 extends {}, TResult extends {}>(
object: Obj,
source1: S1,
source2: S2,
source3: S3,
...sources: {}[]
): TResult;
/**
* @see _.defaults
*/
defaults<Obj extends {}, S1 extends {}, S2 extends {}, S3 extends {}, S4 extends {}, TResult extends {}>(
object: Obj,
source1: S1,
source2: S2,
source3: S3,
source4: S4,
...sources: {}[]
): TResult;
/**
* @see _.defaults
*/
defaults<TResult extends {}>(
object: {},
...sources: {}[]
): TResult;
}
interface LoDashImplicitObjectWrapper<T> {
/**
* @see _.defaults
**/
defaults<T, TResult>(...sources: any[]): LoDashImplicitObjectWrapper<TResult>
* @see _.defaults
*/
defaults<S1 extends {}, TResult extends {}>(
source1: S1,
...sources: {}[]
): LoDashImplicitObjectWrapper<TResult>;
/**
* @see _.defaults
*/
defaults<S1 extends {}, S2 extends {}, TResult extends {}>(
source1: S1,
source2: S2,
...sources: {}[]
): LoDashImplicitObjectWrapper<TResult>;
/**
* @see _.defaults
*/
defaults<S1 extends {}, S2 extends {}, S3 extends {}, TResult extends {}>(
source1: S1,
source2: S2,
source3: S3,
...sources: {}[]
): LoDashImplicitObjectWrapper<TResult>;
/**
* @see _.defaults
*/
defaults<S1 extends {}, S2 extends {}, S3 extends {}, S4 extends {}, TResult extends {}>(
source1: S1,
source2: S2,
source3: S3,
source4: S4,
...sources: {}[]
): LoDashImplicitObjectWrapper<TResult>;
/**
* @see _.defaults
*/
defaults(): LoDashImplicitObjectWrapper<T>;
/**
* @see _.defaults
*/
defaults<TResult>(...sources: {}[]): LoDashImplicitObjectWrapper<TResult>;
}
interface LoDashExplicitObjectWrapper<T> {
/**
* @see _.defaults
*/
defaults<S1 extends {}, TResult extends {}>(
source1: S1,
...sources: {}[]
): LoDashExplicitObjectWrapper<TResult>;
/**
* @see _.defaults
*/
defaults<S1 extends {}, S2 extends {}, TResult extends {}>(
source1: S1,
source2: S2,
...sources: {}[]
): LoDashExplicitObjectWrapper<TResult>;
/**
* @see _.defaults
*/
defaults<S1 extends {}, S2 extends {}, S3 extends {}, TResult extends {}>(
source1: S1,
source2: S2,
source3: S3,
...sources: {}[]
): LoDashExplicitObjectWrapper<TResult>;
/**
* @see _.defaults
*/
defaults<S1 extends {}, S2 extends {}, S3 extends {}, S4 extends {}, TResult extends {}>(
source1: S1,
source2: S2,
source3: S3,
source4: S4,
...sources: {}[]
): LoDashExplicitObjectWrapper<TResult>;
/**
* @see _.defaults
*/
defaults(): LoDashExplicitObjectWrapper<T>;
/**
* @see _.defaults
*/
defaults<TResult>(...sources: {}[]): LoDashExplicitObjectWrapper<TResult>;
}
//_.defaultsDeep