He hecho esto antes, sin embargo, me gusta tratar de apegarme a las prácticas convencionales al escribir para que otros puedan leerlo con la suficiente facilidad, así que pensé en preguntar si es "malo" desestructurar constructores con clases.
p.ej:
// how you'd see a class wrote out normaly class Task { constructor(label, assignedTo) { this.label = label; this.assignedTo = assignedTo; } } // with destructuring ????? class Task { constructor({label, assignedTo='unassigned'}) { this.label = label; this.assignedTo = assignedTo; } }¿Pero por qué?
Bueno, como puede ver, asigné un valor a assignedTo a para que pudiera dejarse en blanco y aún tener un valor. Por ejemplo, si observamos una ruta Express JS, podríamos hacer algo como...
// express js API preparing data before saving to db // ... // req.body content: // { label: 'empty dishwasher' } // assuming the whole request body has been validated by a middleware // pass the whole body in where req.label is an optinal field const task = new Task({ ...req.body }); // ... De esta manera no tengo que sentarme allí y escribir req.body.xxx o const {label, assignedTo} = req.body; así esto:
// ... const { label, assingedTo } = req.body; // just an example of how I could still add a value if assingedTo is undeffined const task = new Task(label, assingedTo ? assingedTo : 'unassinged'); // ...Supongo que esta es "solo otra forma" de hacer algo, sin embargo, me preguntaba si alguien vería esto como una mala práctica. Personalmente creo que podría ser útil, pero nunca veo a nadie haciéndolo.
Veo dos buenas prácticas aquí. Pasar parámetros de un solo objeto con accesorios para diferentes valores de parámetros, en lugar de múltiples parámetros. Y establecer el valor predeterminado para params.