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

Съобщение

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

Примери:
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

Вид на грешката

TypeError.

Какво се обърка?

Върнатият тип не отговаря на очакванията. Това се случва често при върната стойност undefined или null.

Някои методи като Object.create() (en-US) или Symbol.keyFor() (en-US) освен това изискват да им бъде предоставен определен тип.

Примери

Случаи, предизвикващи грешката

// Случаи, при които методът substring няма да работи.
// Такива са undefined и null.
var foo = undefined;
foo.substring(1); // TypeError: foo is undefined

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


// Методи, които очакват да бъдат извикани
// върху точно определен тип.
var foo = {}
Symbol.keyFor(foo); // TypeError: foo is not a symbol

var foo = 'bar'
Object.create(foo); // TypeError: "foo" is not an object or null

Поправяне на грешката

За да оправите грешката в случай на указател, сочещ към стойност undefined или null, можете да използвате оператора typeof.

if (typeof foo !== 'undefined') {
  // Сега знаем, че foo има определена стойност
  // и можем да продължим.
}

Вижте също