#angular #typescript
#angular #typescript
Вопрос:
Приведенный ниже код кажется мне ужасным, но я не уверен в лучших практиках по созданию объектов обновления во внешнем интерфейсе.
buildTaskUpdateObject() {
this.tasks.forEach(task => {
debugger;
const taskRoutingUpdate = new TaskRoutingUpdate();
taskRoutingUpdate.taskGuid = task.taskGuid;
taskRoutingUpdate.printer = this.selectedEquipment.$id;
this.confirmRoutingUpdate.push(taskRoutingUpdate);
});
}
Существуют ли лучшие практики, связанные с получением коллекции объектов и извлечением определенных фрагментов для обновления базы данных?
Комментарии:
1. Это не совсем отличается от того, что я делаю. YoukouleleY делает хороший вывод. Примечание: не вставляйте
debugger
в свой фактический исходный код, просто используйте точки останова в devtools. Существует ненулевой риск того, что вы запустите это в производство.2. По какой-то причине мои точки останова не работают, поэтому я использовал отладчики. Я согласен, что они глупы и подвержены риску для производства.
3. Ах, это интересно. Возможно, вам не хватает исходных карт? Не главная проблема, но в конечном итоге на что-то стоит обратить внимание. Я бы не назвал это обязательно «глупым», просто рискованным. Иногда вы должны делать то, что вы должны делать…
Ответ №1:
Ваш код можно упростить следующим образом:
class TaskRoutingUpdate {
constructor(obj?: any) {
Object.assign(this, obj);
}
}
buildTaskUpdateObject() {
this.tasks.forEach(({ taskGuid }) => {
this.confirmRoutingUpdate.push(new TaskRoutingUpdate({ taskGuid, printer: this.selectedEquipment.$id }));
});
}
Комментарии:
1. Мне нравится, как это выглядит намного больше. Я думал, что может существовать метод rxjs, который мог бы выполнить эту работу, но это может быть излишним для того, что я пытаюсь здесь сделать.
2. Действительно, вам не нужно обрабатывать события здесь