TypeScript: jQuery onClick с eventData - PullRequest
0 голосов
/ 31 мая 2018

Как выглядит ожидаемый обработчик для события onClick jQuery в TypeScript, который принимает eventData?

Обработчик без eventData может быть определен следующим образом:

let onClick(event: JQuery.Event): void 

, который может бытьзарегистрировано так:

$("#btn").click(onClick);

При такой регистрации он отлично работает в моей тестовой скрипке :

$("#btn").click("data3", onClick);

Но моя IDE жалуется:

Ошибка TS2345 (TS) Аргумент типа '(event: Event) => any' не может быть назначен параметру типа 'EventHandler |EventHandlerBase>».Тип '(event: Event) => any' нельзя назначить типу 'EventHandlerBase>'.Типы параметров 'событие' и 't' несовместимы.Тип «Событие» нельзя назначить типу «Событие».Тип "data3" не может быть назначен типу null.

Я понимаю, что в первом случае (без eventData) тип обработчика:

JQuery.EventHandler<TElement>

а во втором случае (с eventData):

JQuery.EventHandler<TElement, TData>

, где TData - тип eventData (строка в моем примере).Но как такой обработчик событий объявляется с использованием допустимого и безопасного типа синтаксиса TypeScript?

1 Ответ

0 голосов
/ 31 мая 2018

Просто добавьте типы - цели и данных события - в качестве общих атрибутов к событию:

let onClick(event: JQuery.Event<EventTarget, string>): void 

Для скрипка это не имеет значения, но это будетсделай IDE и себя счастливым!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...