TypeError: "x" is (not) "y"
Message
TypeError: Unable to get property {x} of undefined or null reference (Edge) TypeError: "x" is (not) "y" (Firefox)
Exemples :
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
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
js
// 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
.
js
if (typeof toto !== "undefined") {
// Désormais, on sait que toto est bien
// défini et on peut poursuivre.
}