Код Visual Studio показывает, что целевая переменная имеет тип EventTarget в следующем коде TypeScript:
document.addEventListener('click', (event) => {
let target = event.target
})
Почему она не помечена скорее как Элемент ? Может ли CharacterData или Document быть также целью MouseEvent? Я щелкал в окне веб-браузера со следующим кодом HTML, но мне не удалось получить типы EventTarget, кроме Element.
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script>
document.addEventListener('click', (event) => {
let target = event.target
console.log(target instanceof Element)
})
</script>
</head>
<body>
test
</body>
</html>
Если код Visual Studio помечает цель MouseEvent как элемент, то Я мог бы написать в Typescript:
document.addEventListener('click', (event) => {
if (event.target.matches('.carousel__control--prev'))
shiftCarouselLeft(event.target.closest('.carousel'))
})
Но теперь я должен явно привести event.target к Element для вызова функции match ():
document.addEventListener('click', (event) => {
let target = <Element>event.target
if (target.matches('.carousel__control--prev'))
shiftCarouselLeft(target.closest('.carousel'))
})