РЕДАКТИРОВАТЬ: Для всех, кто сказал, что я должен предоставить контекст: в этом заключается ответ. Две из приведенных ниже переменных - type
и which
- поступают из внешних по отношению к этому выражению источников, и все в объекте, созданном путем расширения, присваивается выбранному. Я думал, что так или иначе напечатал и которые получали свои значения от объекта, созданного также распространением. Не тот случай!
Я изменяю код ушедшего ведущего разработчика и столкнулся с формулировкой, которую я не понимаю.
{ type, which, selected: { ...selected, ...hovered } }
из этого бита кода
export const renderSelector = createSelector(
selectedTypeSelector,
selectedSelector,
hoveredSelector,
(type, selected, hovered) => memoize(
which => loadRender({ type, which, selected: { ...selected, ...hovered } }),
),
);
Я довольно близко изучил особенности ES6 и не помню, чтобы видел это. Я полностью получаю спред на правой стороне, но мне неясно, что происходит на левой стороне. То есть: что именно делает type, which, selected:
? Я спросил, и мне объяснили, что имена полей слева от :
выше захватывают совпадающие поля в объекте, созданном { ...selected, ...hovered }
, и что несовпадающие поля объединяются в массив rest
, если слева есть несоответствующее имя поля. Может кто-нибудь указать мне ссылку, которая описывает это? Спасибо!