TypeError: "x" is (not) "y"

Message

TypeError: Unable to get property {x} of undefined or null reference (Edge)
TypeError: "x" is (not) "y" (Firefox)

Examples:
TypeError: "x" is undefined
TypeError: "x" is null
TypeError: "undefined" is not an object
TypeError: "x" is not an object or null
TypeError: "x" is not a symbol

Type d'erreur

TypeError.

Quel est le problĂšme ?

Un type inattendu a été rencontré. Cela se produit la plupart du temps avec les valeurs undefined ou null.

Certaines mĂ©thodes comme Object.create() ou Symbol.keyFor() ont des contraintes sur le type de valeur qui peut ĂȘtre passĂ© en argument.

Exemples

Exemples invalides

// undefined et null : des valeurs
// sur lesquelles la méthode substring
// ne fonctionnera pas
var toto = undefined;
toto.substring(1); // TypeError: toto is undefined

var toto = null;
toto.substring(1); // TypeError: toto is null


// Certaines méthodes nécessitent une valeur
// d'un type spécifique
var toto = {}
Symbol.keyFor(toto); // TypeError: toto is not a symbol

var toto = "truc"
Object.create(toto); // TypeError: "toto" is not an object or null

RĂ©soudre le problĂšme

Pour rĂ©soudre ce problĂšme et Ă©carter les cas oĂč la valeur vaut undefined, on peut par exemple utiliser l'opĂ©rateur typeof.

if (typeof toto !== 'undefined') {
  // DĂ©sormais, on sait que toto est bien
  // défini et on peut poursuivre.
}

Voir aussi