小编Eva*_*ner的帖子

document.getElementById("id")可以为null

编辑:我正在使用TypeScript v2.2.1

我是TypeScript的新手,我不确定处理可能存在或不存在的DOM元素的最简洁方法是什么.基本上,我想检查一个元素是否存在,然后如果它存在,添加一个事件监听器(我已经--strict_null_checks打开).

当我这样做的JS方式:

const myElement = document.getElementById('my-id');
if (myElement) {
  myElement.addEventListener('click', (e:Event) => {
    // Do stuff.
  });
}
Run Code Online (Sandbox Code Playgroud)

我收到了错误 my_script.ts(3, 3): error TS2531: Object is possibly 'null'.

我可以通过使用非null断言解决这个问题:

const maybeMyElement = document.getElementById('my-id');
if (maybeMyElement) {
  const myElement = maybeMyElement!;
  myElement.addEventListener('click', (e:Event) => {
    // Do stuff.
  });
}
Run Code Online (Sandbox Code Playgroud)

但我的理解是,这些断言通常是不受欢迎的,而在美学上,我不喜欢创造两倍的变量.

有更清洁的方法吗?

typescript typescript2.0

13
推荐指数
3
解决办法
1万
查看次数

标签 统计

typescript ×1

typescript2.0 ×1