打字稿:如何检查eventTarget中的tagName?

Kli*_*ick 13 javascript typescript

为什么在这种情况下:

var ele = <HTMLDivElement>document.getElementById("toolbar");
    ele.addEventListener("click", function (e) { 
        if (e.target.tagName === "SPAN") { console.log(e.target.tagName) }  }, false);
Run Code Online (Sandbox Code Playgroud)

Visual Studio向我显示此错误?

构建:运算符'==='不能应用于类型'HTMLElement'和'string'.

'EventTarget'类型中不存在属性'tagName'.

当我运行脚本工作正常.

怎么写得好呢?

谢谢.

Rad*_*ler 24

我会像这样调整代码片段:

var ele = <HTMLDivElement>document.getElementById("toolbar");
    ele.addEventListener("click", (ev: MouseEvent) => {
        var element = ev.target as HTMLElement;     
        if (element.tagName === "SPAN") { 
            console.log(element.tagName) 
        }  
    }, false);
Run Code Online (Sandbox Code Playgroud)

事件属性转换targetHTMLElement将为我们提供底层元素的所有适当属性.

操场上看看


小智 9

我发现这个语法也很好用

if ((ev.target as HTMLElement).tagName === "SPAN") { 
Run Code Online (Sandbox Code Playgroud)