老师,在Vue3的setup语法糖中,不能进行暴露emitter,但是类型声明不知道搞,麻烦老师帮我看一下。

来源:5-11 使用新版 mitt 时报出类型错误的解决方案

慕尼黑5268175

2024-12-04

老师,在Vue3的setup语法糖中,没办法将emitter直接进行暴露,我采用了在APP组件中创建emitter实例,然后Form和Input组件可以通过inject获取同一个emitter实例,但是类型声明不知道搞,麻烦老师帮我看一下。
报错地方const emitter = inject<mitt.Emitter>(‘emitter’);
Cannot find namespace ‘mitt’.ts-plugin(2503)
git仓库地址:git@gitee.com:zhai-siqi/vue3_zhihu.git

写回答

2回答

张轩

2024-12-07

同学你好

这样处理一下就好

import mitt, { Emitter } from 'mitt'

const emitter = inject<Emitter<Events>>('emitter');

// 注意现在 emitter 还有一个 undefined 的联合类型,用的时候可以排除一下或者也可以使用类型断言直接排除掉

// 或者你可以讲这些类型文件都单独的放在一个文件中,这样就可以避免这个问题

0
1
慕尼黑5268175
好的,老师,我最近试一下。
2024-12-10
共1条回复

张轩

2024-12-05

同学你好

你现在这个问题解决了吗? 我看你在 Input 中是这么写的,已经没有错误了。

const emitter = inject<MyEmitter>('emitter')


0
1
慕尼黑5268175
老师,这个飘红是在ValidateForm组件中, const emitter = inject>('emitter');这个mitt他说找不到,但是代码可以运行。
2024-12-06
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3166 学习 · 2346 问题

查看课程