首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当侦听Vue 3中的事件时,不能将TypeScript错误‘类型'($event: any) => void’指定为“类型”。

当侦听Vue 3中的事件时,不能将TypeScript错误‘类型'($event: any) => void’指定为“类型”。
EN

Stack Overflow用户
提问于 2022-10-12 06:04:00
回答 4查看 1.1K关注 0票数 15

组件代码:

代码语言:javascript
运行
复制
<h2 @click="handleEvent(post.id)">{{ post.title }}</h2>

function handleEvent(id: number) {
  router.push("/post/" + id);
}

打字稿错误:

代码语言:javascript
运行
复制
Type '($event: any) => void' is not assignable to type 'MouseEvent'.ts(2322)
__VLS_types.ts(107, 56): The expected type comes from property 'click' which is declared here on type 'EventObject<undefined, "click", {}, MouseEvent | undefined>'

有什么问题吗?

EN

回答 4

Stack Overflow用户

发布于 2022-10-13 17:47:55

正如我在这个问题中所理解的,我们有两个选项:

  1. 添加@type/节点:'18.8.0‘
  2. 等待此变化合并到vue 2.7发行版

注意:不使用^,将版本修复为18.0.0

我安装@type/node固定版本,并为我工作。

票数 11
EN

Stack Overflow用户

发布于 2022-10-14 13:49:42

TL;DR:将@types/node降级为18.8.0,直到vue 3.2.41发布。

在过去的几天里,我们遇到了同样的问题,但我们认为我们已经找到了解决办法。

结果是vue 3.2.40@types/node 18.8.5之间的冲突。当前版本的vue与最新的节点类型不兼容(但3.2.41应该解决这个问题)。

我为解决这个问题所采取的步骤:

  1. @types/node还原为不带^18.8.0
  2. 删除节点模块-下面是我们使用的一个方便的脚本:find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \\;,因为我们使用的是纱线工作区monorepo
  3. 重新安装依赖项
  4. 重新加载VS代码- cmd+shift+p转向搜索Developer: Reload Window
票数 4
EN

Stack Overflow用户

发布于 2022-10-13 12:25:09

我们面临着同样的问题--模板中的所有事件处理程序都是错误的。几天前出现的。根据类型记录定义,事件处理程序必须返回类型" event“或"MouseEvent”。因此,我们在模板中将其更正如下:

代码语言:javascript
运行
复制
<h2 @click="(e : MouseEvent) => {handleEvent(post.id); return e;}">{{ post.title }}</h2>

它可以工作,但似乎不是应该编写事件处理程序的方式.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74037132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档