網(wǎng)站首頁 前端文檔 正文
前言:
今天要講的內(nèi)容還是TS相關(guān),在TS中最常見的聲明合并:接口合并
在聊接口合并之前,我們先來聊聊聲明合并
聲明合并:
什么是聲明合并?
其實很好理解,TS中的聲明合并,指的就是編譯器會針對同名的聲明合并為一個聲明
合并的結(jié)果:
合并后的聲明會同時擁有原先兩個或多個聲明的特性
疑問:
那這兩個或多個具體指的是什么呢?
其實得分幾種情況講,今天要講的就是其中一種,最簡單也最常見的聲明合并類型是接口合并
1.合并接口
我們剛剛說了,“合并后的聲明會同時擁有原先兩個或多個聲明的特性”
接口的合并也是一樣,它會將雙方的成員放到一個同名的接口里
需要注意的是,接口里面的成員有函數(shù)成員和非函數(shù)成員,情況有所不一樣
1.1非函數(shù)成員
例如:
interface Box { height: number; } interface Box { width: number; } let box: Box = {height: 2, width: 3};
上述代碼中,定義了兩個名字都為Box
的同名接口(實際開發(fā)中,可能來源于不同的文件),最終里面的東西會混合在一起
但是需要注意,以上情況里頭的成員都是唯一的,但如果兩個接口中同時聲明了同名的非函數(shù)成員且它們的類型不同,則編譯器會報錯
1.2函數(shù)成員
而對于里頭的函數(shù)成員來說,每個同名函數(shù)聲明都會被當(dāng)成這個函數(shù)的一個重載。而且當(dāng)接口 A與后來的接口 A合并時,后面的接口具有更高的優(yōu)先級
例如官方的例子:
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; }
需要注意兩點:
- 每組接口里的聲明順序不變
- 各組接口之間的順序是后來的接口重載出現(xiàn)在靠前位置
不過也有例外:當(dāng)出現(xiàn)特殊的函數(shù)簽名時。 如果簽名里有一個參數(shù)的類型是單一的字符串字面量(比如,不是字符串字面量的聯(lián)合類型),那么它將會被提升到重載列表的最頂端
原文鏈接:https://juejin.cn/post/7034787980313116685
相關(guān)推薦
- 2023-04-02 使用C#連接SQL?Server的詳細(xì)圖文教程_C#教程
- 2022-09-21 python中模塊導(dǎo)入模式詳解_python
- 2022-04-03 Android?PopUpWindow實現(xiàn)卡片式彈窗_Android
- 2023-03-15 React.memo?React.useMemo對項目性能優(yōu)化使用詳解_React
- 2022-10-16 Qt實現(xiàn)串口助手_C 語言
- 2022-06-14 Redis高并發(fā)情況下并發(fā)扣減庫存項目實戰(zhàn)_Redis
- 2022-06-14 go語言中的udp協(xié)議及TCP通訊實現(xiàn)示例_Golang
- 2022-10-11 主從同步中斷(sql_thread)問題一例
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支