#typescript #error-handling #null #compiler-options
#typescript #обработка ошибок #null #параметры компилятора
Вопрос:
В compilerOptions
объекте моего tsconfig.json
файла у меня установлен strictNullChecks
параметр true
.
Иногда, когда я использую такие функции, как getElementById("...")
или querySelector("...")
, я получаю следующую (не фатальную) ошибку:
TS2531: объект, возможно, «нулевой»
Я знаю, почему я получаю эту ошибку (иногда элемент еще не загружен или его невозможно найти), но что именно я должен делать, когда получаю эту ошибку?
Было бы уместно просто поместить код, который использовал элемент (ы) внутри if
условия, например:
let divs: HTMLElement | null = document.getElementById("div");
if(divs !== null) {
// do stuff with divs...
}
Или я должен сделать что-то еще?
Спасибо.
Ответ №1:
Было бы уместно просто поместить код, который использовал элемент (ы) внутри условия if
ДА. Как вы сказали, иногда элемента там нет, поэтому вы получаете null
. Проверка на это уместна.
Если вам нужно использовать getElementById
или querySelector
в ситуации, когда вы знаете, что элемент есть, вы можете предоставить себе вспомогательную функцию, которая выдает, а не возвращает null
:
function getGuaranteed(id: string): HTMLElement {
const el = document.getElementById(id);
if (el == null) {
throw new Error("Element #" id " not found.");
}
return el as HTMLElement;
}
… и используйте это в ситуациях, когда вы знаете, что элемент будет там.