Использование метода при копировании объекта оператором распространения в методе карты - PullRequest
2 голосов
/ 16 января 2020

Я пытаюсь скопировать объект и добавить новое свойство с помощью оператора распространения в моем приложении 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 Ответ

5 голосов
/ 16 января 2020

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

this.files = files['results'].map(file => ({...file, ...this.addNewProperty(file.name)}));
//                                                   ^^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...