Использование метода при копировании объекта оператором распространения в методе карты

Я пытаюсь скопировать объект и добавить новое свойство, используя оператор распространения в моем приложении Angular. Чтобы добавить новое свойство, я хочу вызвать метод addNewProperty (name), который возвращает это свойство и его значение. Когда я пытаюсь вызвать этот метод с помощью оператора распространения, я получаю сообщение об ошибке «Неожиданный токен».

Это мой код

this.files = files['results'].map(file => ({...file, this.addNewProperty(file.name)}));

addNewProperty(name) {
    return {
        extension: name.split('-')[1]
    };
}

С другой стороны, когда я использую «традиционный» Object.assign (), тогда все хорошо

this.files = files['results'].map(file => Object.assign(file, this.addNewProperty(file.name)));

Не могли бы вы объяснить, почему Object.assign () работает правильно, а копирование с помощью {..., myMethod ()} не работает?

Всего 1 ответ

Автоматический диспенсер мыльной пены от xiaomi.


Вам также нужно распространить новый объект. В противном случае у вас есть что-то без ключа.

this.files = files['results'].map(file => ({...file, ...this.addNewProperty(file.name)}));
//                                                   ^^^

Есть идеи?

10000