45 votes

TypeError: ne peut pas correspondre à 'undefined' ou 'null'

Code

client.createPet(pet, (err, {name, breed, age}) => {
  if (err) {
    return t.error(err, 'no error')
  }
  t.equal(pet, {name, breed, age}, 'should be equivalent')
})

Erreur

client.createPet(pet, (err, {name, breed, age}) => {
                        ^

TypeError: Cannot match against 'undefined' or 'null'.

Pourquoi j'obtiens cette erreur? Ma connaissance de l'ES6 m'a conduit à présumer que cette erreur ne devrait survenir si le tableau ou d'un objet d'être déstructuré ou de ses enfants est - undefined ou null.

Je n'étais pas au courant que les paramètres de la fonction sont utilisés comme un match. Et si elles le sont, alors pourquoi est-ce une erreur si j'essaie de se déstructurent l'un d'eux? (qui n'est pas undefined ou null).

69voto

thefourtheye Points 56958

cette erreur ne devrait se produire que si le tableau ou l'objet en cours de déstructuration ou ses enfants est undefined ou null .

Exactement. Dans votre cas, l'objet à déstructurer est undefined ou null . Par exemple,

 function test(err, {a, b, c}) {
  console.log(err, a, b, c);
}

test(1, {a: 2, b: 3, c: 4});
// 1 2 3 4
test(1, {});
// 1 undefined undefined undefined
test(1);
// TypeError: Cannot match against 'undefined' or 'null'.
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X