欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解TypeScript如何正確使用Declare關(guān)鍵字

 更新時(shí)間:2023年08月10日 10:59:20   作者:云端科技  
如果您編寫(xiě) TypeScript 代碼的時(shí)間足夠長(zhǎng),您就已經(jīng)看到過(guò)declare關(guān)鍵字,但它有什么作用,為什么要使用它呢,下面小編就來(lái)和大家簡(jiǎn)單講講

如果您編寫(xiě) TypeScript 代碼的時(shí)間足夠長(zhǎng),您就已經(jīng)看到過(guò)declare關(guān)鍵字。但它有什么作用,為什么要使用它?

declare關(guān)鍵字告訴 TypeScript 編譯器存在一個(gè)對(duì)象并且可以在代碼中使用。

本文解釋了聲明關(guān)鍵字并通過(guò)代碼示例展示了不同的用例。

定義

在 TypeScript 中,declare關(guān)鍵字告訴編譯器存在一個(gè)對(duì)象(并且可以在代碼中引用)。它向 TypeScript 編譯器聲明該對(duì)象。簡(jiǎn)而言之,它允許開(kāi)發(fā)人員使用在其他地方聲明的對(duì)象。

編譯器不會(huì)將此語(yǔ)句編譯為 JavaScript。

開(kāi)發(fā)人員可能需要使用聲明關(guān)鍵字:

  • 使用在另一個(gè)文件中聲明的全局變量。
  • 使用另一個(gè)文件生成的函數(shù)、變量或類。
  • ETC。

很多時(shí)候,declare關(guān)鍵字用于 TypeScript 聲明文件 ( .d.ts )。

使用聲明關(guān)鍵字,您可以聲明:

  • 變量(const、let、var)。
  • 類型或接口
  • A類
  • 一個(gè)枚舉
  • 一個(gè)功能
  • 一個(gè)模塊
  • 命名空間

聲明函數(shù)或類時(shí),您只聲明它們的結(jié)構(gòu),而不是它們的實(shí)現(xiàn)。

具體例子

您想要在 TypeScript 代碼中使用 Google Analytics 腳本。為此,您必須將其包含在 HTML 頁(yè)面中。

你可以這樣包含它:

<script?async?src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script><script>
??window.dataLayer?=?window.dataLayer?||?[];??function?gtag(){dataLayer.push(arguments)};
??gtag('js',?new?Date());
??gtag('config',?'TAG_ID');</script>

dataLayer數(shù)組在 HTML 中聲明。 TypeScript 編譯器不知道它,所以如果你想使用它,你需要聲明它。

以下是聲明方式:

declare?const?dataLayer:?any[];

您現(xiàn)在可以在 TypeScript 代碼中使用dataLayer變量。

使用

通常,TypeScript 代碼需要導(dǎo)入資源,例如圖像或可縮放矢量圖形 (SVG)。

在這些情況下,您必須為每個(gè)模塊創(chuàng)建一個(gè)聲明。

例如,如果我們想在代碼中使用 PNG,我們可以創(chuàng)建如下聲明:

declare?module?'*.png'?{????const?src:?string;????export?default?src;}

在本例中,我們使用通配符模塊聲明,因此我們不必單獨(dú)聲明每個(gè)圖像路徑。

如何聲明全局變量

在聲明文件中輸入變量名稱并鍵入以 聲明全局變量。

這是一個(gè)例子:

declare?var?CPT:?number;

我們現(xiàn)在可以在代碼中使用CPT變量。

如何聲明全局函數(shù)

將函數(shù)定義寫(xiě)入聲明文件中以聲明全局函數(shù)。

這是一個(gè)例子:

declare?function?sayHello(hello:?string):?void;

現(xiàn)在我們可以在代碼中使用sayHello函數(shù)。

如何聲明一個(gè)類

聲明類時(shí),只需編寫(xiě)類結(jié)構(gòu),而不編寫(xiě)每個(gè)函數(shù)的實(shí)現(xiàn)。

這是一個(gè)例子:

declare?class?Animal?{????constructor(name:?string);
????eat():?void;
????sleep():?void;}

我們現(xiàn)在可以在代碼中實(shí)例化Animal類。

如何組織類型和對(duì)象

要組織多種類型和對(duì)象,您可以聲明以下概念之一:

  • 命名空間
  • 一個(gè)模塊

在它們內(nèi)部,聲明所有類型、對(duì)象、類等。

以下是命名空間聲明的示例:

declare?namespace?AnimalLib?{????class?Animal?{????????constructor(name:?string);
????????eat():?void;
????????sleep():?void;
????}
????type?Animals?=?'Fish'?|?'Dog';}

以下是模塊聲明的示例:

declare?module?AnimalLib?{????class?Animal?{????????constructor(name:?string);
????????eat():?void;
????????sleep():?void;
????}
????type?Animals?=?'Fish'?|?'Dog';}

使用聲明關(guān)鍵字來(lái)擴(kuò)充模塊

開(kāi)發(fā)人員還可以使用聲明關(guān)鍵字來(lái)擴(kuò)充模塊。

例如,我們可以向模塊內(nèi)包含的現(xiàn)有接口添加新屬性。

下面是一個(gè)例子:

import?{?
????Palette?as?MuiPallete?}?from?'@mui/material/styles/createPalette';
??declare?module?'@mui/material/styles/createPalette'?{????interface?Palette?extends?MuiPallete?{
????????custom:?{
????????????prop1:?string;
????????}
????}}

在這里,我們從 Material UI 樣式模塊擴(kuò)充Palette 界面并添加自定義對(duì)象。

使用聲明關(guān)鍵字將聲明添加到全局范圍

開(kāi)發(fā)人員還可以使用聲明關(guān)鍵字將聲明添加到全局范圍。

例如,以下是向String JavaScript 對(duì)象添加新方法的方法:

declare?global?{????interface?String?{
????????toSmallString():?string;
????}}
??String.prototype.toSmallString?=?():?string?=>?{????//?implementation.
????return?'';};

在此示例中,我們向String原型添加一個(gè)名為toSmallString的新函數(shù)。

最后的想法

正如您所看到的,當(dāng)使用在其他地方創(chuàng)建的變量時(shí),declare關(guān)鍵字非常有用。

盡管這個(gè)概念并不為人所知,但要成為一名全面的 TypeScript 程序員并能夠幫助您的同行,必須充分理解它。

到此這篇關(guān)于詳解TypeScript如何正確使用Declare關(guān)鍵字的文章就介紹到這了,更多相關(guān)TypeScript Declare內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript自定義文本框光標(biāo)

    JavaScript自定義文本框光標(biāo)

    本篇文章主要介紹了JavaScript自定義文本框光標(biāo)的方法實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • javaScript 計(jì)算兩個(gè)日期的天數(shù)相差(示例代碼)

    javaScript 計(jì)算兩個(gè)日期的天數(shù)相差(示例代碼)

    本篇文章主要介紹了javaScript 計(jì)算兩個(gè)日期的天數(shù)相差(示例代碼) 需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • 微信小程序?qū)W習(xí)筆記之文件上傳、下載操作圖文詳解

    微信小程序?qū)W習(xí)筆記之文件上傳、下載操作圖文詳解

    這篇文章主要介紹了微信小程序?qū)W習(xí)筆記之文件上傳、下載操作,結(jié)合實(shí)例形式分析了微信小程序圖片文件傳輸?shù)脑?、步驟及后臺(tái)php操作相關(guān)實(shí)現(xiàn)技巧,并結(jié)合圖文形式予以詳細(xì)說(shuō)明,需要的朋友可以參考下
    2019-03-03
  • js實(shí)現(xiàn)input框文字動(dòng)態(tài)變換顯示效果

    js實(shí)現(xiàn)input框文字動(dòng)態(tài)變換顯示效果

    這篇文章主要介紹了js實(shí)現(xiàn)input框文字動(dòng)態(tài)變換顯示效果,涉及javascript隨機(jī)字符串與中文的動(dòng)態(tài)切換顯示效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this

    深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this

    這篇文章主要介紹了 深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this,arguments是一個(gè)類數(shù)組結(jié)構(gòu),它保存了調(diào)用時(shí)傳遞給函數(shù)的所有實(shí)參;this是函數(shù)執(zhí)行時(shí)的上下文對(duì)象, 這個(gè)對(duì)象有些讓人感到困惑的行為。 下面分別對(duì)他們進(jìn)行討論。,需要的朋友可以參考下
    2019-06-06
  • 實(shí)例講解JS中setTimeout()的用法

    實(shí)例講解JS中setTimeout()的用法

    這篇文章主要介紹了JS中setTimeout()的用法,setTimeout()是屬于window的method,但我們都是略去window這頂層對(duì)象名稱,這是用來(lái)設(shè)定一個(gè)時(shí)間,時(shí)間到了,就會(huì)執(zhí)行一個(gè)指定的method,需要深入了解的朋友可以參考下
    2016-01-01
  • [js高手之路]單例模式實(shí)現(xiàn)模態(tài)框的示例

    [js高手之路]單例模式實(shí)現(xiàn)模態(tài)框的示例

    下面小編就為大家?guī)?lái)一篇[js高手之路]單例模式實(shí)現(xiàn)模態(tài)框的示例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • JavaScript數(shù)組之展開(kāi)運(yùn)算符詳解

    JavaScript數(shù)組之展開(kāi)運(yùn)算符詳解

    這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組之展開(kāi)運(yùn)算符的相關(guān)資料,你可以通過(guò)展開(kāi)操作符(Spread operator)擴(kuò)展一個(gè)數(shù)組對(duì)象和字符串,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • js中不常見(jiàn)的運(yùn)算符與操作符總結(jié)

    js中不常見(jiàn)的運(yùn)算符與操作符總結(jié)

    運(yùn)算符(operator)也被稱為操作符,是用于實(shí)現(xiàn)賦值、比較和執(zhí)行算數(shù)運(yùn)算等功能的符號(hào),這篇文章主要給大家介紹了關(guān)于js中不常見(jiàn)的運(yùn)算符與操作符的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • javascript 短路法代碼精簡(jiǎn)

    javascript 短路法代碼精簡(jiǎn)

    簡(jiǎn)化IF-ELSE 高效,但請(qǐng)靈活使用
    2009-08-08

最新評(píng)論