请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

老师,在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

正在回答 回答被采纳积分+3

2回答

张轩 2024-12-07 09:01:08

同学你好

这样处理一下就好

import mitt, { Emitter } from 'mitt'

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

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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕尼黑5268175 #1
    好的,老师,我最近试一下。
    回复 有任何疑惑可以回复我~ 2024-12-10 20:23:59
张轩 2024-12-05 15:53:17

同学你好

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

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


0 回复 有任何疑惑可以回复我~
  • 提问者 慕尼黑5268175 #1
    老师,这个飘红是在ValidateForm组件中,
    const emitter = inject<mitt.Emitter<Events>>('emitter');这个mitt他说找不到,但是代码可以运行。
    回复 有任何疑惑可以回复我~ 2024-12-06 10:45:06
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号