Привет, мне интересно, почему тип события '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