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 определено.
}