Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 当我得到“a”时,我到底应该做什么;对象可能为空";打字错误?_Typescript_Error Handling_Null_Compiler Options - Fatal编程技术网

Typescript 当我得到“a”时,我到底应该做什么;对象可能为空";打字错误?

Typescript 当我得到“a”时,我到底应该做什么;对象可能为空";打字错误?,typescript,error-handling,null,compiler-options,Typescript,Error Handling,Null,Compiler Options,在我的tsconfig.json文件的compilerOptions对象中,我将strictNullChecks选项设置为true 有时,当我使用诸如getElementById(“…”)或querySelector(“…”)之类的函数时,会出现以下(非致命)错误: TS2531:对象可能为“null” 我知道为什么会出现这个错误(有时元素还没有加载或者找不到),但是当我出现这个错误时,我应该怎么做呢 将使用元素的代码放入if条件中是否合适,如下所示: let divs: HTMLElement

在我的
tsconfig.json
文件的
compilerOptions
对象中,我将
strictNullChecks
选项设置为
true

有时,当我使用诸如
getElementById(“…”)
querySelector(“…”)
之类的函数时,会出现以下(非致命)错误:

TS2531:对象可能为“null”

我知道为什么会出现这个错误(有时元素还没有加载或者找不到),但是当我出现这个错误时,我应该怎么做呢

将使用元素的代码放入
if
条件中是否合适,如下所示:

let divs: HTMLElement | null = document.getElementById("div");
if(divs !== null) {
  // do stuff with divs...
}
还是我应该做点别的

谢谢

将使用元素的代码放在if条件中是否合适

对。正如您所说,有时元素不在那里,因此您会得到
null
。检查它是否合适

如果在您知道元素存在的情况下需要使用
getElementById
querySelector
,您可以为自己提供一个helper函数,该函数将抛出而不是返回
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;
}
…并在您知道元素将在那里的情况下使用它