Что именно я должен делать, когда я получаю ошибку «Object is null» в TypeScript? - PullRequest
0 голосов
/ 18 апреля 2019

В объекте compilerOptions моего tsconfig.json файла у меня опция strictNullChecks установлена ​​на true.

Иногда, когда я использую такие функции, как getElementById("...") или querySelector("..."), я получаю следующую (не фатальную) ошибку:

TS2531: Возможно, объект 'null'

Я знаю , почему Я получаю эту ошибку (иногда элемент еще не загружен или его невозможно найти), но что именно я должен делать, когда получаю эту ошибку?

Было бы целесообразно просто поместить код, который использовал элемент (ы), в условие if, например:

let divs: HTMLElement | null = document.getElementById("div");
if(divs !== null) {
  // do stuff with divs...
}

Или я должен сделать что-то еще?

Спасибо.

1 Ответ

1 голос
/ 18 апреля 2019

Было бы целесообразно просто поместить код, который использовал элемент (ы), в условие 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;
}

... и использовать это в ситуациях, когда вы знаете, что элемент будет там.

...