编辑:我使用的是打字稿V2.2.1的document.getElementById(“ID”)可以为空
我是新来的打字稿,我不知道该怎么处理DOM元素的最彻底的方法可能或者可能不存在。基本上,我想检查一个元素是否存在,然后如果是这样,请添加一个事件侦听器(我打开了--strict_null_checks
)。
当我做到这一点的JS样方式:
const myElement = document.getElementById('my-id');
if (myElement) {
myElement.addEventListener('click', (e:Event) => {
// Do stuff.
});
}
我得到的错误my_script.ts(3, 3): error TS2531: Object is possibly 'null'.
我可以用一个非空断言解决这个问题:
const maybeMyElement = document.getElementById('my-id');
if (maybeMyElement) {
const myElement = maybeMyElement!;
myElement.addEventListener('click', (e:Event) => {
// Do stuff.
});
}
但我的理解是,这些断言通常是不受欢迎的,美学上我不喜欢创造两倍的变量。
有没有更干净的方法来做到这一点?
您使用的是什么版本的Typescript编译器?你的第一个例子符合我的预期(在'strictNullChecks'上)。 – y2bd
哎呀,对不起,我忘了提及版本。我使用的是2.2.1版本。 –