TS中最常见的声明合并有哪些
小編給大家分享一下TS中最常見的聲明合并有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
前言:
在TS中最常見的聲明合并:接口合并
在聊接口合并之前,我們先來聊聊聲明合并
聲明合并:
什么是聲明合并?
其實很好理解,TS中的聲明合并,指的就是編譯器會針對同名的聲明合并為一個聲明
合并的結(jié)果:
合并后的聲明會同時擁有原先兩個或多個聲明的特性
疑問:
那這兩個或多個具體指的是什么呢?
其實得分幾種情況講,今天要講的就是其中一種,最簡單也最常見的聲明合并類型是接口合并
1.合并接口
我們剛剛說了,“合并后的聲明會同時擁有原先兩個或多個聲明的特性”
接口的合并也是一樣,它會將雙方的成員放到一個同名的接口里
需要注意的是,接口里面的成員有函數(shù)成員和非函數(shù)成員,情況有所不一樣
1.1非函數(shù)成員
例如:
interfaceBox{
height:number;
}
interfaceBox{
width:number;
}
letbox:Box={height:2,width:3};
上述代碼中,定義了兩個名字都為Box的同名接口(實際開發(fā)中,可能來源于不同的文件),最終里面的東西會混合在一起
但是需要注意,以上情況里頭的成員都是唯一的,但如果兩個接口中同時聲明了同名的非函數(shù)成員且它們的類型不同,則編譯器會報錯
1.2函數(shù)成員
而對于里頭的函數(shù)成員來說,每個同名函數(shù)聲明都會被當(dāng)成這個函數(shù)的一個重載。而且當(dāng)接口 A與后來的接口 A合并時,后面的接口具有更高的優(yōu)先級
例如官方的例子:
interfaceCloner{
clone(animal:Animal):Animal;
}
interfaceCloner{
clone(animal:Sheep):Sheep;
}
interfaceCloner{
clone(animal:Dog):Dog;
clone(animal:Cat):Cat;
}
最終會合并成一個聲明,如下:
interfaceCloner{
clone(animal:Dog):Dog;
clone(animal:Cat):Cat;
clone(animal:Sheep):Sheep;
clone(animal:Animal):Animal;
}
需要注意兩點:
-
每組接口里的聲明順序不變
-
各組接口之間的順序是后來的接口重載出現(xiàn)在靠前位置
不過也有例外:當(dāng)出現(xiàn)特殊的函數(shù)簽名時。 如果簽名里有一個參數(shù)的類型是單一的字符串字面量(比如,不是字符串字面量的聯(lián)合類型),那么它將會被提升到重載列表的最頂端
總結(jié)
以上是生活随笔為你收集整理的TS中最常见的声明合并有哪些的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DELPHI编程环境
- 下一篇: 维基百科(Wikipedia)网址[通俗