如何使用 Vue3 和 Typescript 在 Quasar Framework 中定义 ref 方法的类型

Scr*_*crz 5 typescript vue.js quasar-framework vue-composition-api

  • Quasar 框架 v2 测试版
  • Vue 3 组合 API
  • 打字稿

组件模板

<q-btn 
  @click.stop="showingActionMenu()" 
  color="grey-7" 
  round 
  flat 
  icon="more_vert"
>
  <q-menu
    ref="showAction"
    auto-close
  >
    ...                       
  </q-menu>
</q-btn>
Run Code Online (Sandbox Code Playgroud)
setup() {
  ...
  const showAction = ref<Function | null>(null)
  ...
})
Run Code Online (Sandbox Code Playgroud)

组件设置

return {
  ...
  showAction,
  showingActionMenu() {
    showAction?.value?.show()
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

返回的方法显示错误

Property 'show' does not exist on type 'Function'.
Run Code Online (Sandbox Code Playgroud)

Bou*_*him 4

ref 的类型应该是QMenu从 quasar 框架导入的:

import { QMenu } from 'quasar'
...
setup() {
  ...
  const showAction = ref<QMenu>()
  ...
  return {
    ...
    showAction,
    showingActionMenu() {
      showAction.value?.show()
    },
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

现场演示