溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-12-30 11:05:38 來源:億速云 閱讀:419 作者:小新 欄目:開發(fā)技術(shù)

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

前言:

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

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

聲明合并:

什么是聲明合并?

其實(shí)很好理解,TS中的聲明合并,指的就是編譯器會(huì)針對(duì)同名的聲明合并為一個(gè)聲明

合并的結(jié)果:

合并后的聲明會(huì)同時(shí)擁有原先兩個(gè)或多個(gè)聲明的特性

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

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

1.合并接口

我們剛剛說了,“合并后的聲明會(huì)同時(shí)擁有原先兩個(gè)或多個(gè)聲明的特性”

接口的合并也是一樣,它會(huì)將雙方的成員放到一個(gè)同名的接口里

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

1.1非函數(shù)成員

例如:

interface Box {
    height: number;
}

interface Box {
    width: number;
}

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

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

但是需要注意,以上情況里頭的成員都是唯一的,但如果兩個(gè)接口中同時(shí)聲明了同名的非函數(shù)成員且它們的類型不同,則編譯器會(huì)報(bào)錯(cuò)

1.2函數(shù)成員

而對(duì)于里頭的函數(shù)成員來說,每個(gè)同名函數(shù)聲明都會(huì)被當(dāng)成這個(gè)函數(shù)的一個(gè)重載。而且當(dāng)接口 A與后來的接口 A合并時(shí),后面的接口具有更高的優(yōu)先級(jí)

例如官方的例子:

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

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

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

最終會(huì)合并成一個(gè)聲明,如下:

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

需要注意兩點(diǎn):

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

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

不過也有例外:當(dāng)出現(xiàn)特殊的函數(shù)簽名時(shí)。 如果簽名里有一個(gè)參數(shù)的類型是單一的字符串字面量(比如,不是字符串字面量的聯(lián)合類型),那么它將會(huì)被提升到重載列表的最頂端

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

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

ts
AI