如何输入 jQuery .on("paste", hdl)

How to type a jQuery .on("paste", hdl)

我正在尝试为 Chrome(仅)下的 contenteditable <div> 定义处理程序。我有一个 jQuery JQuery<HTMLElement>,我想用 .on() 添加一个 paste 事件处理程序,但打字稿此时抱怨:

No overload matches this call.
  The last overload gave the following error.
    Argument of type 'string' is not assignable to parameter of type
'TypeEventHandlers<HTMLElement, (event: ClipboardEvent) => void, HTMLElement, HTMLElement>'.ts(2769)
JQuery.d.ts(8059, 5): The last overload is declared here.

密码是:

const pasteHandler = (event: ClipboardEvent): void => {
    const pastedData = event.clipboardData!.getData("text/plain");
    console.log(pastedData);
};
$("div").on("paste", pasteHandler); // <- error message from here

pasteHandler 的正确输入是什么?我试过了,但无法破译 jQuery 类型的文件。 我发现的唯一解决方法是将 on 调用替换为: $("div")[0].addEventListener("paste", pasteHandler); 谢谢你的帮助! 请不要专注于jQuery的使用。这是一个旧代码。

可以

const pasteHandler = (event: JQuery.TriggeredEvent<HTMLElement, undefined, HTMLElement, HTMLElement): void => {
  const pastedData = (event.originalEvent as ClipboardEvent).clipboardData?.getData("text/plain");
  //...
}

演示:https://codesandbox.io/s/strange-noether-lgnsi?file=/src/index.ts