diff --git a/types/deepmerge/deepmerge-tests.ts b/types/deepmerge/deepmerge-tests.ts index 5467cb83f0..dcd21ff3c3 100644 --- a/types/deepmerge/deepmerge-tests.ts +++ b/types/deepmerge/deepmerge-tests.ts @@ -1,19 +1,29 @@ import * as deepmerge from "deepmerge"; const x = { - foo: { bar: 3 }, - array: [{ does: 'work', too: [1, 2, 3] }] + foo: { bar: 3 }, + array: [{ does: 'work', too: [1, 2, 3] }] }; const y = { - foo: { baz: 4 }, - quux: 5, - array: [{ does: 'work', too: [4, 5, 6] }, { really: 'yes' }] + foo: { baz: 4 }, + quux: 5, + array: [{ does: 'work', too: [4, 5, 6] }, { really: 'yes' }] }; const expected = { - foo: { bar: 3, baz: 4 }, - array: [{ does: 'work', too: [1, 2, 3, 4, 5, 6] }, { really: 'yes' }], - quux: 5 + foo: { bar: 3, baz: 4 }, + array: [{ does: 'work', too: [1, 2, 3, 4, 5, 6] }, { really: 'yes' }], + quux: 5 }; -const result = deepmerge(x, y); +const result = deepmerge(x, y); +const anyResult = deepmerge(x, y); + +function reverseConcat(dest: number[], src: number[]) { + return src.concat(dest); +} + +const withOptions = deepmerge(x, y, { + clone: false, + arrayMerge: reverseConcat +}); diff --git a/types/deepmerge/index.d.ts b/types/deepmerge/index.d.ts index 96d0412aa6..5b5e3806bd 100644 --- a/types/deepmerge/index.d.ts +++ b/types/deepmerge/index.d.ts @@ -1,17 +1,19 @@ // Type definitions for deepmerge 1.3 // Project: https://github.com/KyleAMathews/deepmerge // Definitions by: marvinscharle +// syy1125 // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export = deepmerge; -declare function deepmerge(x: T, y: T, options?: deepmerge.Options): T; +declare function deepmerge(x: Partial, y: Partial, options?: deepmerge.Options): T; +declare function deepmerge(x: T1, y: T2, options?: deepmerge.Options): T1 & T2; declare namespace deepmerge { - interface Options { + interface Options { clone?: boolean; - arrayMerge?(destination: T, source: T, options?: Options): T; + arrayMerge?(destination: any[], source: any[], options?: Options): any[]; } - function all(objects: T[], options?: Options): T; + function all(objects: Array>, options?: Options): T; }