Merges source to target recursively.
source
target
The return type is inferred from the inputs. For objects it's A & B (which deeply intersects nested objects, so merge({ a: { x: 1 } }, { a: { y: 2 } }) is typed as { a: { x: number; y: number } }). For arrays the result depends on arrayPolicy:
A & B
merge({ a: { x: 1 } }, { a: { y: 2 } })
{ a: { x: number; y: number } }
arrayPolicy
'overwrite'
B
'merge'
(A[number] | B[number])[]
(t, s) => …
Optional
merge({ a: 1 }, { b: 2 })// { a: number; b: number }merge([1, 2], ['a'], { arrayPolicy: 'merge' })// (number | string)[] Copy
merge({ a: 1 }, { b: 2 })// { a: number; b: number }merge([1, 2], ['a'], { arrayPolicy: 'merge' })// (number | string)[]
Merges
sourcetotargetrecursively.The return type is inferred from the inputs. For objects it's
A & B(which deeply intersects nested objects, somerge({ a: { x: 1 } }, { a: { y: 2 } })is typed as{ a: { x: number; y: number } }). For arrays the result depends onarrayPolicy:'overwrite'(default) →B'merge'→(A[number] | B[number])[](t, s) => …→ the function's return type