在script setup中正确导出emitter实例

来源:5-10 ValidateForm 编码第三部分 - 寻找外援 mitt

逸晟

2021-12-19

在script setup中怎么传递emitter实例,用能正确的使用Events 泛型

export const emitter = mitt<Events>()

会报错误

./src/components/ValidateForm.vue?vue&type=script&lang=ts&setup=true (./node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/ts-loader??ref--14-1!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader-v16/dist??ref--1-1!./src/components/ValidateForm.vue?vue&type=script&lang=ts&setup=true)
Module Error (from ./node_modules/vue-loader-v16/dist/index.js):
[@vue/compiler-sfc] <script setup> cannot contain ES module exports. If you are using a previous version of <script setup>, please consult the updated RFC at https://github.com/vuejs/rfcs/pull/227.

/Users/wuhelong/Documents/视频学习课程/慕课网/Vue3.0+Typescript/zheye/src/components/ValidateForm.vue
14 |  type ValidateFunc = () => boolean
15 |  // 实例化 mitt
16 |  type Events = { 'form-item-created': ValidateFunc }
   |                                                      ^
17 |  export const emitter = mitt<Events>()
   |  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
18 |  const emit = defineEmits(['form-submit'])
写回答

1回答

张轩

2021-12-20

同学你好 这个错误和泛型以及ts 都没有关系,这个是 script setup 的限制, 由于它会自动导出给模版使用,所以在这里限制普通的 es modules 的导出,对于这个文件,建议同学不要使用 vue script setup 的形式

0
4
雨中奔跑的前端小蜗牛
请问老师怎样在开始的时候判断是否使用script setup形式?如果写了很多了,再改成defineComponent那样,就很繁琐了
2022-06-12
共4条回复

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

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

3142 学习 · 2313 问题

查看课程