vue组件emits的typescript类型声明核心是defineemits泛型函数签名,支持事件名、参数个数与类型的精准推导和校验,确保ide跳转、编译报错及重构联动;推荐中使用泛型声明,如defineemits(),支持重载;也可用数组声明+const断言或扩展第三方库类型,父子组件事件参数类型自动对齐校验。

Vue 组件的 emits 在 TypeScript 中声明事件类型,核心是用 defineEmits 配合泛型函数签名,让事件名、参数个数和类型全部可推导、可校验。不是加个注释,而是让 IDE 能跳转、编译器能报错、重构时能联动更新。
用泛型声明精确的事件签名
这是最推荐的方式,尤其适合 <script setup></script> 场景。每个事件对应一个函数签名,参数顺序和类型都明确:
-
defineEmits()—— 表示组件可触发submit(带一个FormData参数)或cancel(无参) - 多个同名事件?可以重载:
(e: 'change', value: string): void; (e: 'change', value: number): void - 返回的
emit函数会严格校验调用:写emit('submit', 123)就直接报错,因为类型不匹配
运行时声明 + 类型断言(兼容简单场景)
如果暂时不想写泛型,或需动态判断事件合法性,可用数组形式声明事件名,再配合类型断言保障参数安全:
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
