Почему событие input имеет тип события Event вместо InputEvent - PullRequest
1 голос
/ 06 августа 2020

Привет, мне интересно, почему тип события 'input' является типом Event (я думал, что это должно быть InputEvent)?

Я столкнулся с этой проблемой делая это:

interface OnInputTextFieldListenerProps extends BaseTextFieldListenerProps {
    eventName: Extract<keyof GlobalEventHandlersEventMap, 'input'>;
    callback(e?: InputEvent): void;
}

if (isOnInputTextFieldProps(listenerProps)) {
    this.input.addEventListener<'input'>(listenerProps.eventName, listenerProps.callback.bind(this));
}

И теперь я получаю эту ошибку:

TS2345: аргумент типа '(e ?: InputEvent | undefined) => void' не назначается параметру типа '(this: HTMLInputElement, ev: Event) => any'.

Что полностью правильно. Но почему GlobalEventHandlersEventMap 'input' набирается как Event вместо InputEvent.

Вы можете найти этот GlobalEventHandlersEventMap интерфейс здесь lib.dom .d.ts в строке 5715.

Примечание

Документация MDN говорит, что интерфейс GlobalEventHandlers.oninput InputEvent. oninput - это, вероятно, эквивалент машинописного текста input. Я так думаю, потому что в документах MDN каждый ключ интерфейса GlobalEventHandlers начинается с on.

Я также решил открыть проблему в репозитории Typescript, который вы можете найти здесь: Проблема - 39925

1 Ответ

0 голосов
/ 06 августа 2020

Итак, основная причина того, почему это событие 'input' имеет тип Event вместо InputEvent, заключается в том, что InputEvent является частью черновика спецификации НЕ официальный HTML уровень жизни .

Если вы хотите узнать больше, вы можете прочитать весь ответ предоставлено Andrew Branch

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