【问题标题】:Adding window.event handler to typescript将 window.event 处理程序添加到打字稿
【发布时间】:2016-07-29 13:46:50
【问题描述】:

通常当我想在 js 中捕获页面上的事件时:

window.onkeydown = function (event) {
    //Do something here
}

我似乎无法弄清楚(或谷歌)如何在打字稿中做到这一点。对于我正在使用的设置,页面有一个ts 文件,它正在加载的类有一个ts 文件。

【问题讨论】:

  • 你有其他选择吗,比如window.addEventListener
  • 如果有什么东西可以完成上述,对于打字稿,那么它是一个替代品
  • 你能多解释一下环境吗?您是在编译代码以在浏览器上运行还是在某处进行解释?
  • 这是一个MVC项目
  • 有什么问题?这段代码既可以编译又可以工作。

标签: javascript typescript


【解决方案1】:

这个

window.addEventListener('keydown', keyDownListener, false)

window 定义将lib.d.ts 中的所有事件和这个特定的侦听器作为

 addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void;

或者这个,如果你想保持你原来的“风格”,

window.onkeydown = (ev: KeyboardEvent): any => {
     //do something
}

【讨论】:

  • 如果您的项目设置正确,则无需这样做。 lib.d.ts 使用 onkeydown 属性定义窗口。
【解决方案2】:

为了更清楚地回答:

const controlDown = (event: KeyboardEvent) => {
    console.log(event);
};
window.addEventListener('keydown', controlDown);

【讨论】:

  • 获取Type '(event: React.KeyboardEvent<Element>) => void' is not assignable to type 'EventListener'.
  • 如果在 React 中使用它,请确保您不会意外使用 import { KeyboardEvent } from "react";。这会导致not assignable to type 'EventListener' 异常。相反,必须使用 globalThis 中的 KeyboardEvent(即只需删除 import 语句)
猜你喜欢
  • 2012-10-04
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2017-11-14
  • 2021-02-26
相关资源
最近更新 更多