vue3怎么给emit加类型声明

22 阅读1分钟
<script setup lang="ts">
const emit = defineEmits<{
  'update:selected': [id: number]
  'profile-view': [user: User]
}>()

function selectUser(user: User) {
  emit('update:selected', user.id)
  emit('profile-view', user)
}
</script>

举个例子,

子向父 传递事件

<template>
  <div @click="clickThis">点我</div>
</template>

<script setup lang="ts">
    /*ts专有*/
  const emit= defineEmits<{
    (e: 'click', num: number): void
  }>()
    /*非ts专有*/
  const emit= defineEmits(['click'])
  
  const clickThis = () => {
    emit('click',2)
  }
</script>

<style scoped lang="less">
</style>