Mientras desarrollaba mi aplicación de reacción, necesitaba enviar un accesorio condicional a un componente, así que encontré un patrón para hacerlo, aunque me parece muy extraño y no podía entender cómo y por qué funcionaba.
Si escribo:
console.log(...undefined) // Error console.log([...undefined]) // Error console.log({...undefined}) // WorkCuando el operador de propagación se activa en undefined, se genera un error, aunque cuando el undefined está dentro de un objeto, se devuelve un objeto vacío.
Estoy bastante sorprendido con respecto a este comportamiento, ¿realmente es así como se supone que debe ser? ¿Puedo confiar en esto y es una buena práctica?
Este comportamiento es útil para hacer algo como la distribución opcional :
function foo(options) { const bar = { baz: 1, ...(options && options.bar) // options and bar can be undefined } } Y mejora aún más con el encadenamiento opcional , que ahora se encuentra en Stage 4 (y ya está disponible en TypeScript 3.7+):
function foo(options) { const bar = { baz: 1, ...options?.bar //options and bar can be undefined } }un pensamiento : es una lástima que no funcione también para propagarse en una matriz