91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TS中最常見的聲明合并有哪些

發布時間:2021-12-30 11:05:38 來源:億速云 閱讀:426 作者:小新 欄目:開發技術

小編給大家分享一下TS中最常見的聲明合并有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

前言:

在TS中最常見的聲明合并:接口合并

在聊接口合并之前,我們先來聊聊聲明合并

聲明合并:

什么是聲明合并?

其實很好理解,TS中的聲明合并,指的就是編譯器會針對同名的聲明合并為一個聲明

合并的結果:

合并后的聲明會同時擁有原先兩個或多個聲明的特性

疑問:
那這兩個或多個具體指的是什么呢?

其實得分幾種情況講,今天要講的就是其中一種,最簡單也最常見的聲明合并類型是接口合并

1.合并接口

我們剛剛說了,“合并后的聲明會同時擁有原先兩個或多個聲明的特性”

接口的合并也是一樣,它會將雙方的成員放到一個同名的接口里

需要注意的是,接口里面的成員有函數成員和非函數成員,情況有所不一樣

1.1非函數成員

例如:

interface Box {
    height: number;
}

interface Box {
    width: number;
}

let box: Box = {height: 2, width: 3};

上述代碼中,定義了兩個名字都為Box的同名接口(實際開發中,可能來源于不同的文件),最終里面的東西會混合在一起

但是需要注意,以上情況里頭的成員都是唯一的,但如果兩個接口中同時聲明了同名的非函數成員且它們的類型不同,則編譯器會報錯

1.2函數成員

而對于里頭的函數成員來說,每個同名函數聲明都會被當成這個函數的一個重載。而且當接口 A與后來的接口 A合并時,后面的接口具有更高的優先級

例如官方的例子:

interface Cloner {
    clone(animal: Animal): Animal;
}

interface Cloner {
    clone(animal: Sheep): Sheep;
}

interface Cloner {
    clone(animal: Dog): Dog;
    clone(animal: Cat): Cat;
}

最終會合并成一個聲明,如下:

interface Cloner {
    clone(animal: Dog): Dog;
    clone(animal: Cat): Cat;
    clone(animal: Sheep): Sheep;
    clone(animal: Animal): Animal;
}

需要注意兩點:

  • 每組接口里的聲明順序不變

  • 各組接口之間的順序是后來的接口重載出現在靠前位置

不過也有例外:當出現特殊的函數簽名時。 如果簽名里有一個參數的類型是單一的字符串字面量(比如,不是字符串字面量的聯合類型),那么它將會被提升到重載列表的最頂端

以上是“TS中最常見的聲明合并有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ts
AI

日喀则市| 东乌珠穆沁旗| 曲松县| 巫溪县| 翁源县| 桓台县| 信宜市| 沙湾县| 秭归县| 仪征市| 岗巴县| 凤台县| 贞丰县| 禹城市| 昆明市| 平邑县| 威远县| 佛学| 舞阳县| 德钦县| 常州市| 英德市| 甘肃省| 铁力市| 阿拉善左旗| 威海市| 彭泽县| 东兴市| 吉水县| 本溪市| 卓尼县| 荔波县| 修水县| 阳城县| 广安市| 杨浦区| 徐水县| 东源县| 吴江市| 苍溪县| 克什克腾旗|