You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron+TypeScript中sendInputEvent传mouseWheel报TS2345错误如何解决?

Electron中sendInputEvent触发mouseWheel的TypeScript类型错误解决

问题场景

我在BrowserView中使用sendInputEvent发送键盘事件:

view.webContents.sendInputEvent({type: 'keyDown', keyCode: 'C'})

同时在BrowserWindow的渲染页面添加了键盘监听:

window.addEventListener('keydown', function(event) {
    console.log("App_S-keyDown-event: ", event)
})

所有按键及方向键(上、下)均能正常响应。

但在尝试发送鼠标滚轮事件时出现问题。根据Electron文档,sendInputEvent的type字段可设为mouseWheel,但执行以下代码:

SearchWindow.webContents.sendInputEvent({type: 'mouseWheel'})

触发TS2345类型错误,错误信息如下:

TS2345: Argument of type '{ type: "mouseWheel"; }' is not assignable to parameter of 
type 'MouseInputEvent | MouseWheelInputEvent | KeyboardInputEvent'.
  Property 'keyCode' is missing in type '{ type: "mouseWheel"; }' but required in type
 'KeyboardInputEvent'.

这是TypeScript与Electron的类型兼容问题。

环境信息

electron: 19
typescript: ~4.5.4
O.S. : Ubuntu 22.04 Desktop

解决方法

1. 显式指定事件类型

通过类型断言明确告诉TypeScript当前对象是MouseWheelInputEvent,避免类型推断混淆:

import { MouseWheelInputEvent } from 'electron';

SearchWindow.webContents.sendInputEvent({
  type: 'mouseWheel'
} as MouseWheelInputEvent);

2. 补充必要字段

TypeScript的类型检查可能比Electron文档要求更严格,补充鼠标滚轮事件的必填或常用字段(如滚动偏移量):

SearchWindow.webContents.sendInputEvent({
  type: 'mouseWheel',
  deltaX: 0,
  deltaY: 100 // 可根据需求调整滚动幅度
});

3. 同步类型定义版本

确保@types/electron的版本与Electron主版本一致,避免类型定义不匹配:

npm install @types/electron@19 --save-dev

内容的提问来源于stack exchange,提问作者Raphael10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:52:21