記VUE3+TS獲取組件類型的方法踩坑及解決
VUE3+TS獲取組件類型的方法踩坑
獲取組件類型的方法
const AccountRef = ref<InstanceType<typeof LoginAccount>>()
遇到的坑
typeof LoginAccount一直報紅線提示錯誤
LoginAction: () => vo...' provides no match for the signature 'new (...args: any): any'.
問題原因
使用的是webstorm codeing,通過webstorm自帶右鍵新建vue文件,創建出來的文件是不帶defineComponent的,所以導致上述的一直報紅線
<script lang="ts"> export default { } </script>
解決辦法
引用defineComponent
<script lang="ts"> import { defineComponent } from 'vue' export default defineComponent({//註意這裡的這個小括號不能漏 }) </script>
VUE3+TS獲取組件ref實例
使用 vue3 和 ts 時,為瞭獲取 組件 ref 實例,就需要在 ref 函數的泛型中指定類型。
如何獲取組件的類型呢?
vue 官方文檔中 TypeScript 支持裡已經告訴我們瞭一個獲取組件類型的方法,InstanceType<typeof 組件名稱>
使用方式如下:
const $userForm = ref<InstanceType<typeof userForm>>();
總結
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- vite的搭建與使用的詳細步驟
- Vue3之getCurrentInstance與ts結合使用的方式
- vue3中如何使用ts
- Vue3 Composition API的使用簡介
- Vue3+Element+Ts實現表單的基礎搜索重置等功能