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

Message

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

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

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 too = 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 ou null, 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

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,