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

TypeScript系列, 通過(guò)vue3實(shí)例說(shuō)說(shuō)declare module語(yǔ)法怎么用[模塊聲明篇]

這篇具有很好參考價(jià)值的文章主要介紹了TypeScript系列, 通過(guò)vue3實(shí)例說(shuō)說(shuō)declare module語(yǔ)法怎么用[模塊聲明篇]。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

欠你們的

本系列文章是我20年開(kāi)始寫的, 這個(gè)模塊聲明也是本系列的最后一課, 中間因?yàn)闀r(shí)間安排間隔了1年, 當(dāng)時(shí)答應(yīng)大家要補(bǔ)充的, 現(xiàn)在來(lái)還債??.

中間的時(shí)間我寫了vue3的入門教程, 現(xiàn)在寫了一半了吧, 帶視頻的, 如果有需要的小伙伴可以去看看. https://www.yuque.com/books/share/c0ab3348-87ab-4e77-a34e-10ede7dfb00e?# 《vue3知識(shí)點(diǎn)"精選"》

往期目錄

第一課, 體驗(yàn)typescript

第二課, 基礎(chǔ)類型和入門高級(jí)類型

第三課, 泛型

第四課, 解讀高級(jí)類型

第五課, 命名空間(namespace)是什么

特別篇, 在vue3??源碼中學(xué)會(huì)typescript?? - "is"

第六課, 什么是聲明文件(declare)? ?? - 全局聲明篇

第七課, 通過(guò)vue3實(shí)例說(shuō)說(shuō)declare module語(yǔ)法怎么用??模塊聲明篇

新開(kāi)發(fā)vscode插件: ?any-type, 一鍵json到ts類型

使用場(chǎng)景

npm下載的"包"自帶了聲明文件, 如果我們需要對(duì)其類型聲明進(jìn)行擴(kuò)展就可以使用"declare module"語(yǔ)法.

讓vue3支持this.$axios

typescript // main.ts app.config.globalProperties.$axios = axios; 功能上我們實(shí)現(xiàn)了"this.$axios", 但是ts并不能自動(dòng)推斷出我們添加了$axios字段, 所以添加如下聲明文件: ```typescript // global.d.ts

// axios的實(shí)例類型 import { AxiosInstance } from 'axios'

// 聲明要擴(kuò)充@vue/runtime-core包的聲明. // 這里擴(kuò)充"ComponentCustomProperties"接口, 因?yàn)樗莢ue3中實(shí)例的屬性的類型. declare module '@vue/runtime-core' {

// 給this.$http提供類型 interface ComponentCustomProperties { $axios: AxiosInstance; } } ``` 這里擴(kuò)充"ComponentCustomProperties"接口, 因?yàn)樗莢ue3中實(shí)例的屬性的類型.

更全面的例子

上面的例子中我們擴(kuò)充了原聲明中的interface, 但是如果導(dǎo)出是一個(gè)Class我們?cè)撊绾螌懩? 下面我們對(duì)"any-touch"的類型進(jìn)行擴(kuò)充, 這里"any-touch"的默認(rèn)導(dǎo)出是一個(gè)Class. 假設(shè)我們對(duì)"any-touch"的代碼做了如下修改:

  1. 導(dǎo)出增加"aaa"變量, 是string類型.
  2. 類的實(shí)例增加"bbb"屬性, 是number類型.
  3. 類增加靜態(tài)屬性"ccc", 是個(gè)函數(shù). ```typescript // global.d.ts

// AnyTouch一定要導(dǎo)入, 因?yàn)橹挥袑?dǎo)入才是擴(kuò)充, 不導(dǎo)入就會(huì)變成覆蓋. import AnyTouch from 'any-touch'

declare module 'any-touch' { // 導(dǎo)出增加"aaa"變量, 是個(gè)字符串. export const aaa: string;

export default class {
  // 類增加靜態(tài)屬性"ccc", 是個(gè)函數(shù).
  static ccc:()=>void
  // 類的實(shí)例增加"bbb"屬性, 是number類型.
  bbb: number
}

} ``` 注意: AnyTouch一定要導(dǎo)入, 因?yàn)橹挥袑?dǎo)入才是類型擴(kuò)充, 不導(dǎo)入就會(huì)變成覆蓋. ?

測(cè)試下, 類型都已經(jīng)正確的添加: ```typescript // index.ts import AT,{aaa} from 'any-touch';

const s = aaa.substr(0,1);

const at = new AT(); at.bbb = 123;

AT.ccc = ()=>{}; ```

對(duì)非ts/js文件模塊進(jìn)行類型擴(kuò)充

ts只支持模塊的導(dǎo)入導(dǎo)出, 但是有些時(shí)候你可能需要引入css/html等文件, 這時(shí)候就需要用通配符讓ts把他們當(dāng)做模塊, 下面是對(duì)".vue"文件的導(dǎo)入支持(來(lái)自vue官方): typescript // global.d.ts declare module '*.vue' { import { DefineComponent } from 'vue' const component: DefineComponent<{}, {}, any> export default component } typescript // App.vue // 可以識(shí)別vue文件 import X1 from './X1.vue'; export default defineComponent({ components:{X1} }) 聲明把vue文件當(dāng)做模塊, 同時(shí)標(biāo)注模塊的默認(rèn)導(dǎo)出是"component"類型. 這樣在vue的components字段中注冊(cè)模塊才可以正確識(shí)別類型.

vuex

下面是vuex官方提供的, 在vue的實(shí)例上聲明增加$store屬性, 有了前面的支持, 看這個(gè)應(yīng)該很輕松. ```typescript // vuex.d.ts

import { ComponentCustomProperties } from 'vue' import { Store } from 'vuex'

// 聲明要擴(kuò)充@vue/runtime-core包的聲明 declare module '@vue/runtime-core' { // declare your own store states interface State { count: number }

// provide typings for this.$store interface ComponentCustomProperties { $store: Store } } ```

并非全部?jī)?nèi)容

到此聲明的內(nèi)容就都結(jié)束了, 但實(shí)際上還有些"模塊聲明"的方式并沒(méi)有覆蓋到, 因?yàn)楸菊n程的最終目的是基于vue3開(kāi)發(fā)暫不涉獵npm包的開(kāi)發(fā),所以其他的內(nèi)容就不展開(kāi)了, 有需要的同學(xué)可以看ts文檔來(lái)學(xué)習(xí), 有了本文的基礎(chǔ), 相信你會(huì)很輕松學(xué)會(huì)更多.

微信群

感謝大家的閱讀, 如有疑問(wèn)可以加我微信, 我拉你進(jìn)入微信群(由于騰訊對(duì)微信群的100人限制, 超過(guò)100人后必須由群成員拉入)

github

我個(gè)人的開(kāi)源都是基于ts的, 歡迎大家訪問(wèn)https://github.com/any86

TypeScript系列, 通過(guò)vue3實(shí)例說(shuō)說(shuō)declare module語(yǔ)法怎么用[模塊聲明篇]文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-421581.html

到了這里,關(guān)于TypeScript系列, 通過(guò)vue3實(shí)例說(shuō)說(shuō)declare module語(yǔ)法怎么用[模塊聲明篇]的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 通過(guò)實(shí)例了解vue3.3更新的特征

    通過(guò)實(shí)例了解vue3.3更新的特征

    開(kāi)場(chǎng)白 準(zhǔn)備新新特征的環(huán)境 使用vite來(lái)學(xué)習(xí)vue3.3的新特征 插件 script setup + TypeScript 開(kāi)發(fā)體驗(yàn)改善 解析導(dǎo)入的類型,并支持有限的復(fù)雜類型 需要注意的點(diǎn) 類型的擴(kuò)展 需要注意的點(diǎn) 通用組件-組件可以接收泛型參數(shù) 多個(gè)泛型 defineEmits的優(yōu)化--現(xiàn)在 defineEmits以前的寫法 尾聲

    2024年02月07日
    瀏覽(17)
  • Vue3集成ThreeJS實(shí)現(xiàn)3D效果,threejs+Vite+Vue3+TypeScript 實(shí)戰(zhàn)課程【一篇文章精通系列】

    Vue3集成ThreeJS實(shí)現(xiàn)3D效果,threejs+Vite+Vue3+TypeScript 實(shí)戰(zhàn)課程【一篇文章精通系列】

    這是一個(gè)使用Vue3,TypeScript,Vite和Three.js的項(xiàng)目。Vue3是一個(gè)流行的JavaScript框架,用于構(gòu)建用戶界面。TypeScript是一種靜態(tài)類型的編程語(yǔ)言,它是JavaScript的超集,可以編譯成純JavaScript。Vite是一個(gè)由Evan You開(kāi)發(fā)的新的前端構(gòu)建工具,能夠提供快速的冷啟動(dòng)和即時(shí)熱更新。 Three.j

    2024年02月03日
    瀏覽(25)
  • 說(shuō)說(shuō)如何在Vue項(xiàng)目中應(yīng)用TypeScript?

    說(shuō)說(shuō)如何在Vue項(xiàng)目中應(yīng)用TypeScript?

    與link類似 在 VUE 項(xiàng)目中應(yīng)用 typescript ,我們需要引入一個(gè)庫(kù) vue-property-decorator , 其是基于 vue-class-component 庫(kù)而來(lái),這個(gè)庫(kù) vue 官方推出的一個(gè)支持使用 class 方式來(lái)開(kāi)發(fā) vue 單文件組件的庫(kù) 主要的功能如下: methods 可以直接聲明為類的成員方法 計(jì)算屬性可以被聲明為類的屬性

    2024年03月16日
    瀏覽(27)
  • Vue3 + TypeScript + Uniapp 開(kāi)發(fā)小程序【醫(yī)療小程序完整案例·一篇文章精通系列】

    Vue3 + TypeScript + Uniapp 開(kāi)發(fā)小程序【醫(yī)療小程序完整案例·一篇文章精通系列】

    當(dāng)今的移動(dòng)應(yīng)用市場(chǎng)已經(jīng)成為了一個(gè)日趨競(jìng)爭(zhēng)激烈的領(lǐng)域,而開(kāi)發(fā)一個(gè)既能在多個(gè)平臺(tái)上運(yùn)行,又能夠高效、可維護(hù)的應(yīng)用則成為了一個(gè)急需解決的問(wèn)題。 在這個(gè)領(lǐng)域中,Vue3 + TypeScript + Uniapp 的組合已經(jīng)成為了一種受歡迎的選擇,特別是在開(kāi)發(fā)小程序方面。Vue3 作為一個(gè)現(xiàn)代

    2024年02月09日
    瀏覽(19)
  • 前端經(jīng)典面試題 | 吊打面試官系列 之 說(shuō)說(shuō)你對(duì)TypeScript 和 JavaScript的理解

    ??? 前端經(jīng)典面試題 專欄:吊打面試官系列 之 說(shuō)說(shuō)你對(duì)TypeScript 和 JavaScript的理解 ????? 個(gè)人簡(jiǎn)介:一個(gè)不甘平庸的平凡人?? ? 個(gè)人主頁(yè):CoderHing的個(gè)人主頁(yè) ?? 格言: ?? 路漫漫其修遠(yuǎn)兮,吾將上下而求索?? ?? 你的一鍵三連是我更新的最大動(dòng)力?? 目錄 一、回答

    2024年01月17日
    瀏覽(41)
  • VUE報(bào)錯(cuò)解決Could not find a declaration file for module ‘xxx‘.

    VUE報(bào)錯(cuò)解決Could not find a declaration file for module ‘xxx‘.

    Github上下載的代碼,導(dǎo)入后出現(xiàn)以下報(bào)錯(cuò)。 ? ?錯(cuò)誤代碼 Could not find a declaration file for module \\\'element-plus/dist/locale/zh-cn.mjs\\\'. \\\'c:/Users/Lenovo/typescript/hotel/hotel-system-web-main/node_modules/element-plus/dist/locale/zh-cn.mjs\\\' implicitly has an \\\'any\\\' type. If the \\\'element-plus\\\' package actually exposes this module, try ad

    2024年02月12日
    瀏覽(28)
  • 安裝vite框架,報(bào)錯(cuò)“Cannot find module ‘./App.vue‘ or its corresponding type declaration” 問(wèn)題解決方法

    安裝vite框架,報(bào)錯(cuò)“Cannot find module ‘./App.vue‘ or its corresponding type declaration” 問(wèn)題解決方法

    代碼編輯器:vscode ,使用vue3,所以安裝了 Volar 插件,可以使 vue 代碼高亮顯示,不同顏色區(qū)分代碼塊,以及語(yǔ)法錯(cuò)誤提示等 提示:如果使用的是vue2,則使用 Vetur 插件;使用 vue3 的話 ,要禁用 Vetur 插件,然后用 Volar 插件。兩個(gè)插件不要同時(shí)使用,會(huì)沖突。 報(bào)錯(cuò)描述: 安裝

    2024年02月11日
    瀏覽(33)
  • 前端vue3+typescript架構(gòu)

    前端vue3+typescript架構(gòu)

    1、vue creat 項(xiàng)目名稱 選擇自定義 ?選擇需要的依賴 ?選擇vue3 ?一路enter,選擇eslist+prettier ?繼續(xù)enter,等待安裝 按步驟操作,項(xiàng)目啟動(dòng)成功 ?2、vscode安裝5款插件 ?2、代碼保存自動(dòng)格式化,保證每個(gè)開(kāi)發(fā)人員代碼一致,根目錄新建三個(gè)文件.editorconfig和.prettierrc和.prettierignore

    2024年02月11日
    瀏覽(32)
  • TypeScript中的類型聲明declare

    在 TypeScript 中, declare 用于定義 全局 變量、函數(shù)和類型等 ,提供了一種在編譯過(guò)程中告訴TypeScript編譯器某個(gè)標(biāo)識(shí)符的類型的方式。它告訴編譯器:雖然它在當(dāng)前文件中沒(méi)有聲明,但它在其他地方已經(jīng)存在了。也就是說(shuō),declare讓 編譯器 知道 這些聲明的實(shí)體是在編譯

    2024年02月12日
    瀏覽(17)
  • Vue3項(xiàng)目中沒(méi)有配置 TypeScript 支持,使用 TypeScript 語(yǔ)法

    1.安裝 TypeScript:首先,需要在項(xiàng)目中安裝 TypeScript。在終端中運(yùn)行以下命令 2.創(chuàng)建 TypeScript 文件:在 Vue 3 項(xiàng)目中,可以創(chuàng)建一個(gè)以 .ts 后綴的文件,例如 MyComponent.ts。在這個(gè)文件中,可以使用 TypeScript 語(yǔ)法編寫代碼。 在上面的示例中,我們使用 defineComponent 函數(shù)來(lái)定義一個(gè)

    2024年02月15日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包