Что такое ошибка TypeError с null?
Ошибка TypeError: Cannot read property of null
возникает, когда код пытается обратиться к свойству объекта, который равен null
.
Причины возникновения
- Объект не был инициализирован
- Функция возвращает null
- Ошибка в логике условных операторов
- Проблемы с асинхронным кодом
Как отладить ошибку
- Проверь объект на null - добавь проверки перед обращением к свойствам
- Добавь console.log() для отладки - выведи значение объекта
- Используй отладчик браузера - поставь breakpoint и проверь состояние
- Проверь возвращаемые значения функций - убедись, что функция не возвращает null
Как исправить ошибку
1. Добавь проверки на null
2. Используй optional chaining (ES2020)
3. Используй значения по умолчанию
4. Используй try-catch для обработки ошибок
Как мониторить подобные ошибки
- Используй TypeScript для статической проверки типов
- Настрой ESLint для предупреждений о потенциальных null
- Пиши тесты, покрывающие случаи с null
- Используй мониторинг ошибок (Sentry, LogRocket)
FAQ
В: В чем разница между null и undefined?
О: undefined означает, что переменная объявлена, но не инициализирована, а null - это явно присвоенное "пустое" значение.
В: Как проверить на null?
О: Используй typeof x === 'null'
или x === null
, но лучше используй truthy/falsy проверки.
В: Что делать с вложенными объектами?
О: Используй optional chaining (obj?.prop?.subprop
) или создай функцию для безопасного доступа.
Лучшие практики
- Всегда проверяй объекты на null перед обращением к свойствам
- Используй optional chaining для безопасного доступа
- Инициализируй объекты в конструкторе
- Обрабатывай исключения явно
- Используй TypeScript для типизации