Поясните, как работает spread оператор.
Как я понял, он он должен запускать итератор, если таковой реализован для объекта, если нет, то ошибка.
Однако если использовать его для составления нового объекта из двух других {...obj, ...obj2}, то логика работы получается другой.
Ошибки не будет, даже если итератор реализован. Почему так происходит?