記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。

推薦閱讀: