Vue3 + Typescript:類型使用記錄 / 類型注解 / 積累

一、ReturnType<typeof createApp>

ReturnType<typeof createApp> 是一種類型安全的寫法,是 TypeScript 中的一個高級類型,它用于獲取函數 createApp 的返回類型。

實例:

import registerFocus from './focus' // 獲取焦點
import registerDebounce from './debounce' // 防抖
import registerModifyText from './modifyText' // 修改文本
import { createApp } from 'vue'; // ReturnType<typeof createApp> 是一種類型安全的寫法,是 TypeScript 中的一個高級類型,它用于獲取函數 createApp 的返回類型。export default function registerDirectives(app: ReturnType<typeof createApp>) {registerFocus(app)registerDebounce(app)registerModifyText(app)
}

二、HTMLElement

HTMLElement?是 TypeScript 和 JavaScript 中用來表示 HTML 文檔中任何元素的基本類型。它是 DOM(文檔對象模型)API 的一部分,提供了對 HTML 元素的標準屬性和方法的訪問。

如果你知道元素的具體類型(例如?<div>),可以使用更具體的類型,如?HTMLDivElement,這樣可以獲得更精確的類型提示和檢查。

實例:

// 獲取焦點
import { createApp } from 'vue';
export default function (app: ReturnType<typeof createApp>) {app.directive('focus', {mounted(el: HTMLElement) {console.log('focus mounted')el.focus()}})
}

三、DirectiveBinding

在 Vue.js 中,DirectiveBinding?是一個用于描述指令綁定值的類型。它提供了對指令綁定值的類型檢查和自動完成支持,特別是在 TypeScript 中。

DirectiveBinding?是一個接口,定義了指令綁定值的結構。它通常包含指令的參數、值、修飾符等信息。

當你在 Vue 中編寫自定義指令時,DirectiveBinding?類型可以用來聲明指令鉤子函數的參數類型,以便 TypeScript 可以提供類型檢查和智能提示。

實例:

    // 防抖
    import { createApp, DirectiveBinding  } from 'vue';
    export default function (app: ReturnType<typeof createApp>) {app.directive('debounce', {mounted(el: HTMLElement, binding: DirectiveBinding) {let timer: numberel.addEventListener('click', () => {if (timer) {clearTimeout(timer)}timer = setTimeout(() => {binding.value()}, 1000) as unknown as number})}})
    }
    

    四、RouteRecordRaw

    在 Vue Router 中,routes 的約束類型是 RouteRecordRaw。

    實例:

    import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
    import Home from '../views/Home.vue';
    const routes: Array<RouteRecordRaw> = [{path: '/',name: 'Home',component: Home,},{path: '/about',name: 'About',component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),},
    ];
    const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes,
    });
    export default router;

    自定義類型擴展:在實際項目開發中,可擴展 RouteRecordRaw 類型。

    實例:

    type RouteConfig = RouteRecordRaw & { hidden?: boolean };
    const routes: Array<RouteConfig> = [{path: '/',name: 'Home',component: Home,hidden: true,meta: { permission: true, icon: '' },},
    ];

    五、MouseEvent

    MouseEvent 是 TypeScript 內置的 DOM 類型之一,表示鼠標交互產生的事件。在 Vue 3 中,當你處理 @click、@mousemove 等鼠標相關事件時,可以使用這個類型來標注事件參數

    實例:

    <template><button @click="handleClick">點擊我</button>
    </template><script setup lang="ts">
    const handleClick = (event: MouseEvent) => {console.log(event.clientX, event.clientY); // 鼠標點擊位置console.log(event.target); // 觸發事件的元素
    };
    </script>

    六、歡迎交流指正

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/news/908013.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/news/908013.shtml
    英文地址,請注明出處:http://en.pswp.cn/news/908013.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    SIFT 算法原理詳解

    SIFT 算法原理詳解 SIFT&#xff08;尺度不變特征變換&#xff0c;Scale-Invariant Feature Transform&#xff09;是一種經典的局部特征檢測和描述算法&#xff0c;它能夠在不同的尺度、旋轉和光照變化下穩定地檢測圖像特征。SIFT 主要包括以下幾個步驟&#xff1a;尺度空間極…

    2024年認證杯SPSSPRO杯數學建模D題(第二階段)AI繪畫帶來的挑戰解題全過程文檔及程序

    2024年認證杯SPSSPRO杯數學建模 D題 AI繪畫帶來的挑戰 原題再現&#xff1a; 2023 年開年&#xff0c;ChatGPT 作為一款聊天型AI工具&#xff0c;成為了超越疫情的熱門詞條&#xff1b;而在AI的另一個分支——繪圖領域&#xff0c;一款名為Midjourney&#xff08;MJ&#xff…

    電子電路:全面深入了解晶振的定義、作用及應用

    本次了解重點: 1.壓電效應的數學描述 2.生產工藝以及關鍵工序 3.電路設計部分如負阻原理和匹配電容計算 4.失效案例比如冷啟動問題 5.新形態晶振技術引入5G和量子計算 6.溫補晶振的補償機制 7故障案例講解-更換負載電池或增加預熱電路 藍牙音頻斷續-頻偏導致 工控機死機-起振電…

    【Java實用工具類】手擼SqlBuilder工具類,優雅拼接動態SQL,MyBatisPlus同款風格!

    &#x1f4cc; 正文&#xff1a; 有時候我們項目底層是 JdbcTemplate 查詢&#xff0c;沒法像 MyBatisPlus 一樣用 Wrapper 拼接條件&#xff0c;但我們又不想手擼字符串。那怎么辦&#xff1f;我今天就給你整了個 SqlBuilder 工具類&#xff0c;支持 eq、ne、like、in、gt、l…

    WEB3——開發者怎么查看自己的合約日志記錄

    在區塊鏈中查看合約的日志信息&#xff08;也叫事件 logs&#xff09;&#xff0c;主要有以下幾種方式&#xff0c;具體方法依賴于你使用的區塊鏈平臺&#xff08;如 Ethereum、BSC、Polygon 等&#xff09;和工具&#xff08;如 Etherscan、web3.js、ethers.js、Hardhat 等&am…

    Maven-生命周期

    目錄 1.項目對象模型 2.依賴管理模型 3.倉庫&#xff1a;用于存儲資源&#xff0c;管理各種jar包 4.本地倉庫路徑 1.項目對象模型 2.依賴管理模型 3.倉庫&#xff1a;用于存儲資源&#xff0c;管理各種jar包 4.本地倉庫路徑

    redis數據過期策略

    redis數據過期策略有兩種方案 1.惰性刪除 2.定期刪除 首先說惰性刪除&#xff0c;對于已經過期的數據&#xff0c;訪問這個key的時候判斷key是否過期&#xff0c;如果過期則刪除&#xff0c;這種方式對cpu友好&#xff0c;只有使用key的時候才會進行過期檢查&#xff0c;用不到…

    P1040 [NOIP 2003 提高組] 加分二叉樹

    目錄 題目算法標簽: 區間 d p dp dp, 動態規劃, d f s dfs dfs思路代碼 題目 P1040 [NOIP 2003 提高組] 加分二叉樹 算法標簽: 區間 d p dp dp, 動態規劃, d f s dfs dfs 思路 給出的是一顆子樹的中序遍歷, s c o r e l r r o o t score l \times r root scorelrro…

    uni-app學習筆記十七-css和scss的使用

    SCSS 和 CSS的異同點 我們可以使用css和scss來設置樣式。其中SCSS&#xff08;Sassy CSS&#xff09;是 CSS 預處理器 Sass&#xff08;Syntactically Awesome Stylesheets&#xff09;的一種語法格式&#xff0c;而 CSS&#xff08;Cascading Style Sheets&#xff09;是標準…

    Spring Boot中Excel處理完全指南:從基礎到高級實踐

    Excel處理基礎知識 1.1 為什么需要在應用中處理Excel文件&#xff1f; 在企業應用開發中&#xff0c;Excel文件處理是一個非常常見的需求&#xff0c;主要用于以下場景&#xff1a; 數據導入&#xff1a;允許用戶通過Excel上傳批量數據到系統 數據導出&#xff1a;將系統數據…

    Python編程基礎(四) | if語句

    引言&#xff1a;很久沒有寫 Python 了&#xff0c;有一點生疏。這是學習《Python 編程&#xff1a;從入門到實踐&#xff08;第3版&#xff09;》的課后練習記錄&#xff0c;主要目的是快速回顧基礎知識。 練習1&#xff1a;條件測試 編寫一系列條件測試&#xff0c;將每個條…

    使用pandas實現合并具有共同列的兩個EXCEL表

    表1&#xff1a; 表2&#xff1a; 表1和表2&#xff0c;有共同的列“名稱”&#xff0c;而且&#xff0c;表1的內容&#xff08;行數&#xff09;<表2的行數。 目的&#xff0c;根據“名稱”列的對應內容&#xff0c;將表2列中的“所處行業”填寫到表1相應的位置。 實現代…

    ERP學習-AP

    業務需要。持續更新學習進度 借助網上零搭建平臺上手實操 這個是簡道云平臺頁面鏈接&#xff0c;登錄的化去手機號登錄 目前開始對應付模塊進行學習

    Dify知識庫下載小程序

    一、Dify配置 1.查看或創建知識庫的API 二、下載程序配置 1. 安裝依賴resquirements.txt ######requirements.txt##### flask2.3.3 psycopg2-binary2.9.9 requests2.31.0 python-dotenv1.0.0#####安裝依賴 pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.…

    【PbstarAdmin】微前端架構下的高效后臺管理系統解決方案

    如果你正在尋找一個高效、穩定、易于使用、易于擴展的管理后臺解決方案&#xff0c;PbstarAdmin 絕對值得一試。以下是它的在線演示和官方文檔地址&#xff0c;你可以先睹為快&#xff1a; 在線演示&#xff1a;http://pbstar-admin.pbstar.cn/官方文檔&#xff1a;http://pbs…

    Java基礎之數組(附帶Comparator)

    文章目錄 基礎概念可變參數組數組與ListComparator類1,基本概念2,使用Comparator的靜態方法&#xff08;Java 8&#xff09;3,常用Comparator方法4,例子 排序與查找數組復制其他 基礎概念 int[] anArray new int[10];只有創建對象時才會使用new關鍵字&#xff0c;所以數組是個…

    Apache Doris 在數據倉庫中的作用與應用實踐

    在當今數字化時代&#xff0c;企業數據呈爆炸式增長&#xff0c;數據倉庫作為企業數據管理和分析的核心基礎設施&#xff0c;其重要性不言而喻。而 Apache Doris&#xff0c;作為一款基于 MPP&#xff08;Massively Parallel Processing&#xff0c;大規模并行處理&#xff09;…

    P1438 無聊的數列/P1253 扶蘇的問題

    因為這兩天在寫線性代數的作業&#xff0c;沒怎么寫題…… P1438 無聊的數列 題目背景 無聊的 YYB 總喜歡搞出一些正常人無法搞出的東西。有一天&#xff0c;無聊的 YYB 想出了一道無聊的題&#xff1a;無聊的數列。。。 題目描述 維護一個數列 ai?&#xff0c;支持兩種操…

    SpringBoot 自定義注解實現限流

    SpringBoot 自定義注解實現限流 限流是為了防止服務器資源的過度消耗&#xff0c;通過一定的策略來控制訪問頻率&#xff0c;確保服務的高可用性和穩定性。其核心意義在于防止流量高峰時期接口過載&#xff0c;從而引起服務崩潰或響應延遲增加。本文將簡述如何通過AOP和自定義…

    Unity——QFramework框架 內置工具

    QFramework 除了提供了一套架構之外&#xff0c;QFramework 還提供了可以脫離架構使用的工具 TypeEventSystem、EasyEvent、BindableProperty、IOCContainer。 這些工具并不是有意提供&#xff0c;而是 QFramework 的架構在設計之初是通過這幾個工具組合使用而成的。 內置工具…