Muchos nombres de propiedades iguales en este código. ¿Es posible hacerlo mucho más compacto?
constructor(product) { this.session = SessionBuilder.create(); this.id = product.id; this.name = product.name; this.root = product.root; this.pics = product.pics; this.sizes = product.sizes; this.colors = product.colors; this.rating = product.rating; this.feedbacks = product.feedbacks; }Encontré solo una solución con getters.
constructor(product) { this.session = SessionBuilder.create(); this.product = product; } get id() { return this.product.id; } get name() { return this.product.name; } ...Pero realmente no me gusta. Se ve mejor (para mí), pero el código sería mucho más... ¿Alguien puede sugerir una mejor solución?
Podría utilizar un enfoque basado en tablas para copiar de forma segura solo un conjunto conocido de propiedades sin tener que nombrar las propiedades más de una vez:
const propNames = ["id", "name", "root", "pics", "sizes", "colors", "rating", "feedbacks"]; class Whatever { constructor(product) { this.session = SessionBuilder.create(); for (let prop of propNames) { this[prop] = product[prop]; } } ... } Si solo desea copiar todas las propiedades de la variable del product , puede usar Object.assign() :
class Whatever { constructor(product) { this.session = SessionBuilder.create(); Object.assign(this, product); } ... } Sin embargo, esto es menos seguro ya que las personas podrían poner cualquier cosa en el objeto del product , incluidas cosas que incluso podrían anular sus propios métodos o propiedades además de lo que pretendía.
Puede ver soluciones utilizando la asignación de desestructuración de objetos aquí en esta pregunta: ¿Es posible desestructurar en un objeto existente? , pero no vi ninguna solución allí que sea más simple que estas.