国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!

這篇具有很好參考價值的文章主要介紹了何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

要說今年最熱門的前端技術,Vue3 和 TS 絕對榜上有名了。今天就給大家分享一下如何在 Vue3 組件中結(jié)合 Composition-Api 使用 TS 類型。如果有不會或者不熟的小伙伴,一起學起來吧!

一、為 props 標注類型

使用 < script setup >

當使用 < script setup > 時,defineProps() 宏函數(shù)支持從它的參數(shù)中推導類型:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!
這被稱為 運行時聲明 ,因為傳遞給 defineProps() 的參數(shù)會作為運行時的 props 選項使用。
第二種方式,通過泛型參數(shù)來定義 props 的類型,這種方式更加直接:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!
這被稱為 基于類型的聲明 ,編譯器會盡可能地嘗試根據(jù)類型參數(shù)推導出等價的運行時選項。 這種方式的不足之處在于,失去了定義 props 默認值的能力。為了解決這個問題,我們可以使用 withDefaults 編譯器宏:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!
上面代碼會被編譯為等價的運行時 propsdefault 選項。

非 < script setup >

如果沒有使用 < script setup >,那么為了開啟 props 的類型推導,必須使用 defineComponent()。傳入 setup()props 對象類型是從 props 選項中推導而來。
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!

二、為 emits 標注類型

使用 < script setup >

< script setup > 中,emit 函數(shù)的類型標注也可以使用 運行時聲明 或者 基于類型的聲明 :
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!
我們可以看到,基于類型的聲明 可以使我們對所觸發(fā)事件的類型進行更細粒度的控制。

非 < script setup >

若沒有使用 < script setup >,defineComponent() 也可以根據(jù) emits 選項推導暴露在 setup 上下文中的 emit 函數(shù)的類型:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!

三、為 ref() 標注類型

默認推導類型

ref 會根據(jù)初始化時的值自動推導其類型:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!

通過接口指定類型

有時我們可能想為 ref 內(nèi)的值指定一個更復雜的類型,可以使用 Ref 這個接口:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!

通過泛型指定類型

或者,在調(diào)用 ref() 時傳入一個泛型參數(shù),來覆蓋默認的推導行為:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!
注意:如果你指定了一個泛型參數(shù)但沒有給出初始值,那么最后得到的就將是一個包含 undefined 的聯(lián)合類型。

四、為 reactive() 標注類型

默認推導類型

reactive() 也會隱式地從它的參數(shù)中推導類型:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!

通過接口指定類型

要顯式地指定一個 reactive 變量的類型,我們可以使用接口:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!

五、為 computed() 標注類型

默認推導類型

computed() 會自動從其計算函數(shù)的返回值上推導出類型:
何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!

通過泛型指定類型

你還可以通過泛型參數(shù)顯式指定類型:
在這里插入圖片描述

六、為事件處理函數(shù)標注類型

在處理原生 DOM 事件時,應該給事件處理函數(shù)的參數(shù)正確地標注類型:
在這里插入圖片描述
當沒有類型標注時,這個 event 參數(shù)會隱式地標注為 any 類型。這也會在 tsconfig.json 中配置了 "strict": true 或 "noImplicitAny": true 時報出一個 TS 錯誤。因此,建議顯式地為事件處理函數(shù)的參數(shù)標注類型。此外,你可能需要顯式地強制轉(zhuǎn)換 event 上的屬性:
在這里插入圖片描述

七、為 provide / inject 標注類型

provideinject 通常會在不同的組件中運行。要正確地為注入的值標記類型,Vue 提供了一個 InjectionKey 接口,它是一個繼承自 Symbol 的泛型類型,可以用來在提供者和消費者之間同步注入值的類型:
在這里插入圖片描述
建議將注入 key 的類型放在一個單獨的文件中,這樣它就可以被多個組件導入。
當使用字符串注入 key 時,注入值的類型是 unknown,需要通過泛型參數(shù)顯式聲明:
在這里插入圖片描述
注意注入的值仍然可以是 undefined,因為無法保證提供者一定會在運行時 provide 這個值。當提供了一個默認值后,這個 undefined 類型就可以被移除:
在這里插入圖片描述
如果你確定該值將始終被提供,則還可以強制轉(zhuǎn)換該值:
在這里插入圖片描述

八、為 dom 模板引用標注類型

模板 ref 需要通過一個顯式指定的泛型參數(shù)和一個初始值 null 來創(chuàng)建:
在這里插入圖片描述
注意為了嚴格的類型安全,有必要在訪問 el.value 時使用可選鏈或類型守衛(wèi)。這是因為直到組件被掛載前,這個 ref 的值都是初始的 null,并且 v-if 將引用的元素卸載時也會被設置為 null。

九、為組件模板引用標注類型

有時,我們需要為一個子組件添加一個模板 ref,以便調(diào)用它公開的方法。比如,我們有一個 MyComponent 子組件,它有一個打開模態(tài)框的方法:
在這里插入圖片描述

為了獲取 MyComponent 的類型,我們首先需要通過 typeof 得到其類型,再使用 TypeScript 內(nèi)置的 InstanceType 工具類型來獲取其實例類型:
在這里插入圖片描述

小結(jié)

好了,以上就是在 Vue3 組件中使用 TS 類型的基本方法,也是我最近的 Vue3 學習筆記。歡迎在評論區(qū)交流討論,一起學習成長!文章來源地址http://www.zghlxwxcb.cn/news/detail-402163.html

到了這里,關于何為 Vue3 組件標注 TS 類型,看這篇文章就夠了!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Vue3通透教程【十三】TS簡單類型詳解

    專欄介紹: 涼哥作為 Vue 的忠實 粉絲輸出過大量的 Vue 文章,應粉絲要求開始更新 Vue3 的相關技術文章,Vue 框架目前的地位大家應該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2024年02月05日
    瀏覽(28)
  • Vue3通透教程【十二】TS類型聲明優(yōu)勢

    專欄介紹: 涼哥作為 Vue 的忠實 粉絲輸出過大量的 Vue 文章,應粉絲要求開始更新 Vue3 的相關技術文章,Vue 框架目前的地位大家應該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2023年04月20日
    瀏覽(29)
  • VUE3+TS(父子、兄弟組件通信)

    目錄 父傳子值、方法(子調(diào)用父值、方法) 子傳父值(父調(diào)用子值) 父讀子(子傳父)(父調(diào)用子值、方法) 兄弟(任意組件)通信 引入Mitt來完成任意組件通信 1、統(tǒng)一規(guī)范寫法,通過在子組件標簽上綁定屬性和值,來傳遞到子組件,子組件再通過defineProps來接收,先給其

    2023年04月08日
    瀏覽(21)
  • Vue3通透教程【十四】TS復雜類型詳解(一)

    專欄介紹: 涼哥作為 Vue 的忠實 粉絲輸出過大量的 Vue 文章,應粉絲要求開始更新 Vue3 的相關技術文章,Vue 框架目前的地位大家應該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2024年02月02日
    瀏覽(32)
  • vue3.2+ts錯誤:找不到模塊“./App.vue”或其相應的類型聲明。ts(2307)

    vue3.2+ts錯誤:找不到模塊“./App.vue”或其相應的類型聲明。ts(2307)

    vue3.2+ts錯誤:找不到模塊“./App.vue”或其相應的類型聲明。ts(2307) ? 解決方法: 在項目根目錄創(chuàng)建 env.d.ts?文件(如果已有,則在文件中追加),加入以下內(nèi)容: 報錯原因: 未定義 .vue文件的類型,導致 ts?無法解析其類型,在env.d.ts中定義后即可解決。

    2024年02月11日
    瀏覽(31)
  • Vue3 TS寫法 父子組件傳值(通訊)

    父組件: 子組件: 通過defineProps來接受數(shù)據(jù)(無須引入直接使用即可) 子組件可寫默認值也可以不寫兩種情況 子組件通過defineEmits派發(fā)一個事件?(一樣無須引入直接使用即可) ?父組件接受子組件的事件 chilFun

    2024年02月15日
    瀏覽(25)
  • vue3(ts)類型“EventTarget”上不存在屬性“value”

    vue3(ts)類型“EventTarget”上不存在屬性“value”

    萌新一枚,記錄自己學習ts遇到的坑,幫助加強記憶。 一、問題: 封裝自定義input組件,在獲取e.target.value時出現(xiàn)如下報錯。類型“EventTarget”上不存在屬性“value” ? 二、原因: e.target默認為HTMLElement類型,是所有HTML元素類型的父類,不能確保身上一定有value屬性。因此需要

    2024年02月12日
    瀏覽(49)
  • UVeiw 組件的使用(更多自定義案例和解決方案),Vue3 +ts 版本 #Selected組件 #Vue 3 # Ts
  • vue3 ts獲取組件 ref元素的值

    在 Vue 3 + TypeScript 中,要獲取組件 ref 元素的值,可以通過 ref 函數(shù)創(chuàng)建一個 ref,并將其綁定到組件的 ref 屬性上。然后,可以通過訪問 ref 的 .value 屬性來獲取該組件的實例。 以下是一個示例代碼: 在上述代碼中,我們首先使用 ref 函數(shù)創(chuàng)建了一個名為 childComponentRef 的 ref,并

    2024年02月05日
    瀏覽(27)
  • vue3+ts+vite項目引入echarts,vue3項目echarts組件封裝

    vue3+ts+vite項目引入echarts,vue3項目echarts組件封裝

    技術棧 :Vue3 + Ts + Vite + Echarts 簡介 : 圖文詳解,教你如何在 Vue3 項目中 引入Echarts , 封裝Echarts組件 ,并實現(xiàn)常用Echarts圖例 1.1 靜態(tài)效果 1.2 動態(tài)效果 2.1 安裝 Echarts npm: pnpm: 2.2 main.ts 中引入 2.3 Echarts 組件封裝 /src/components/ReEcharts/index.vue 文件中寫入如下代碼 3.1 柱狀圖 實現(xiàn)

    2024年02月09日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包