Типизация timeupdate event в Typescript

Рейтинг: 1Ответов: 1Опубликовано: 03.03.2025

Делаю первый проект на typescript, пытаюсь получить currentTime у audio, но тс ругается, что такого не существует в типе EventTarget. Подскажите как правильно типизировать и где можно в принципе почитать про типизацию event в typescript?

const audio = new Audio('/audio/1.mp3') as HTMLMediaElement;
audio.addEventListener('timeupdate', (event: Event) => {
      console.log(event.target?.currentTime);
    });

Ответы

▲ 0Принят

Параметр в обработчике добавляемом с помощью .addEventListener никак не получится типизировать.

В качестве решения можно использовать приведение as

const audio = new Audio('/audio/1.mp3');
audio.addEventListener('timeupdate', (event: Event) => {
    console.log((event.target as HTMLMediaElement)?.currentTime);
});

Либо вообще не использовать этот параметр. При использовании обычной функции в качестве this установится элемент, к которому прикреплен обработчик.

const audio = new Audio('/audio/1.mp3');
audio.addEventListener('timeupdate', function() {
    console.log(this.currentTime);
});