【发布时间】:2020-10-04 10:19:06
【问题描述】:
我有一个像这样的事件监听器回调:
function(ev: Event) {
var userBox = id("user-box");
var target = ev.target;
// here
}
现在,我需要将目标投射到 Element。 为什么会这样编译:
function(ev: Event) {
var userBox = id("user-box");
var target = ev.target;
if (target instanceof Element) {
if (userBox.contains(target)) {
// do something
}
}
}
...但这不是?
function(ev: Event) {
var userBox = id("user-box");
var target = ev.target;
if (target !instanceof Element) {
return;
}
if (userBox.contains(target)) {
// do something
}
}
【问题讨论】:
-
因为它是语法错误(在 JavaScript 中)或非
null断言运算符(在 TypeScript 中)。instanceof是一个中缀运算符,它期望它的操作数在它的左边和右边。你需要if (!(target instanceof Element))。
标签: node.js typescript casting return instanceof