Typescript: как проверить tagName в eventTarget?

почему в данном случае:

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

Visual Studio показывает мне эту ошибку?

Build: оператор '= = = 'не может быть применен к типам 'HTMLElement' и "струна".

свойство "tagName" не существует для типа "EventTarget".

когда я запускаю скрипт работает нормально.

Как правильно писать?

спасибо.

3 ответов


Я бы изменить код следующим образом:

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);

кастинг событие свойства target to HTMLElement даст нам все правильные свойства базового элемент.

Регистрация его в детская площадка


два равных знака сравнивают значения между (int == 'string') типами (т. е. 19=='19') С true.

3 равных знака при сравнении значений и типов. Таким образом, вы сравниваете строковый тип с типом HTML. Таким образом повторив ложь. Если вы хотите сравнить элемент tagname со строкой, используйте два равных знака


в Angular если свойство tagName дает ошибку на цели, попробуйте использовать ниже code

event.target['tagName']