web-dev-qa-db-fra.com

Opérateur de propagation Javascript ES6 sur undefined

Lors du développement de mon application React, j'avais besoin d'envoyer un accessoire conditionnel à un composant.J'ai donc trouvé un modèle pour le faire, même si cela me semble vraiment bizarre et je ne pouvais pas comprendre comment et pourquoi cela fonctionnait.

Si je tape:

console.log(...undefined)   // Error 
console.log([...undefined]) // Error
console.log({...undefined}) // Work

Lorsque l'opérateur de propagation est activé sur indéfini, une erreur est générée, bien que lorsque l'indéfini se trouve à l'intérieur d'un objet, un objet vide est retourné.

Je suis assez surpris de ce comportement, est-ce vraiment comme ça qu'il est censé être, puis-je m'y fier et est-ce une bonne pratique?

23
omri_saadon

Ce comportement est utile pour faire quelque chose comme étalement optionnel :

function foo(options) {
  const bar = {
    baz: 1, 
    ...(options && options.bar) //options and bar can be undefined
  } 
}

Et c'est encore mieux avec chaînage optionnel , qui est dans stage-1:

function foo(options) {
  const bar = {
    baz: 1, 
    ...options?.bar //options and bar can be undefined
  } 
}

une pensée: c'est dommage ça ne marche pas aussi pour se propager dans un tableau

24
bitstrider