在我的tsconfig.json
文件的compilerOptions
对象中,我将strictNullChecks
选项设置为true
。
有时,当我使用getElementById("...")
或querySelector("...")
等函数时,我会收到以下(非致命(错误:
TS2531:对象可能为"空">
我知道为什么我会收到此错误(有时元素尚未加载或找不到(,但是当我收到此错误时,我到底应该怎么做?
将使用该元素的代码放在if
条件中是否合适,如下所示:
let divs: HTMLElement | null = document.getElementById("div");
if(divs !== null) {
// do stuff with divs...
}
还是我应该做点别的事情?
谢谢。
将使用该元素的代码放在 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;
}
。并在您知道元素将存在的情况下使用它。