TypeError: "x" is (not) "y"
СообÑение
TypeError: "x" is (not) "y" 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
Тип оÑибки
ЧÑо ÑлÑÑилоÑÑ?
ÐÑÑÑеÑен неожиданнÑй Ñип. ÐÑо ÑаÑÑо ÑлÑÑаеÑÑÑ Ñо знаÑениÑми null или undefined.
Так же, некоÑоÑÑе меÑодÑ, Ñакие как Object.create() или Symbol.keyFor(), ÑÑебÑÑÑ Ð¾Ð¿ÑеделÑннÑй Ñип, коÑоÑÑй должен бÑÑÑ Ð¿ÑедоÑÑавлен.
ÐÑимеÑÑ
>ÐедопÑÑÑимÑе ÑлÑÑаи
js
// СлÑÑаи undefined и null, пÑи коÑоÑÑÑ
меÑод substring не бÑÐ´ÐµÑ ÑабоÑаÑÑ
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
РеÑение пÑоблемÑ
ЧÑо Ð±Ñ Ð¸ÑпÑавиÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð¿ÑÑÑого ÑказаÑÐµÐ»Ñ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ typeof.
js
if (typeof foo !== "undefined") {
// ТепеÑÑ Ð¼Ñ Ð·Ð½Ð°ÐµÐ¼, ÑÑо foo опÑеделено.
}