【发布时间】:2020-11-26 02:58:23
【问题描述】:
您好,我想知道为什么 '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。
您可以在 lib.dom.d.ts 的 5715 行找到这个GlobalEventHandlersEventMap 接口。
注意
MDN documentation 表示GlobalEventHandlers.oninput 接口是InputEvent。 oninput 可能相当于打字稿 input。我是这么认为的,因为在 MDN 文档中,GlobalEventHandlers 接口的每个键都以 on 开头。
我还决定在 Typescript 存储库中打开一个问题,您可以在这里找到:Issue - 39925
【问题讨论】:
标签: javascript typescript dom types