При использовании Object.assign :
Свойства в целевом объекте будут перезаписаны свойствами в источниках, если они имеют одинаковый ключ.Более поздние свойства источников будут аналогично перезаписывать более ранние.
Object.assign
не выполняет глубокое слияние , что, по-видимому, соответствует ожиданиям.Если два источника имеют одинаковое свойство, будет использоваться только свойство последнего источника.Таким образом, с учетом двух объектов, таких как:
const a = {
Query: {
foo: () => 'FOO',
},
}
const b = {
Query: {
bar: () => 'BAR',
},
}
, если вы используете Object.assign
для их объединения, результирующий объект будет иметь одно свойство Query
, которое соответствует либо a
, либо b
(в зависимости от того, какойбыл последним параметром).Чтобы выполнить слияние deep , объединяющее объекты со свойствами с одинаковым именем, вы должны использовать существующее решение, например lodash :
const resolvers = _.merge(a, b)
или что-то похожее .