TS 類型兼容教程示例詳解
類型兼容
因為JS語言不慎過于領(lǐng)過, 真實開發(fā)場景中往往無法做到嚴(yán)格一致的類型約束,此時TS就不得不做類型兼容
- 頂類型:unknown -- 任何類型都可以賦值給unknown
- 底類型:never -- never兼容任何類型(可以賦值給任何類型)
- any: 其實不是一個類型,它是一個錯誤關(guān)閉器,用了any就等同于放棄了類型約束
簡單類型兼容
子集可以賦值給父級
type name = string | number
string
和 number
都是 類型name
的子集
普通對象兼容
屬性多的可以賦值給屬性少的,前提是有共同屬性
- 屬性越多,限制越多,表示的集合越小(符合條件的對象越少)
- 屬性越少,限制越少,表示的集合越大
type Person = { name: string age: number } let user = { name: 'liu', age: 20, email: '' } let p: Person = user
函數(shù)兼容
參數(shù)數(shù)量不一致
數(shù)量少的兼容數(shù)量多的,前提為類型一致
只要參數(shù)部分能夠找到對應(yīng)的位置就用**==綠色箭頭==,否則為==紅色箭頭==**,當(dāng)參數(shù)全為綠色箭頭時,最左側(cè)的箭頭就為綠色,代表函數(shù)可以兼容
參數(shù)類型不一致
參數(shù)部分: 子類可以兼容父類,則函數(shù)整體不能兼容,
MyMouseEvent
是 MyEvent
的子類,所以mouseListener
不兼容 listener
==對參數(shù)要求多的函數(shù)不能賦值給對參數(shù)要求少的函數(shù)==
MyEvent
是 MyMouseEvent
的父類,所以listener
兼容 mouseListener
返回不同
返回值屬性多集合小 可以 兼容 返回值屬性少集合大
以上就是TS 類型兼容教程示例詳解的詳細(xì)內(nèi)容,更多關(guān)于TS 類型兼容的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序 實現(xiàn)拖拽事件監(jiān)聽實例詳解
這篇文章主要介紹了微信小程序 實現(xiàn)拖拽事件監(jiān)聽實例詳解的相關(guān)資料,在開發(fā)不少應(yīng)用或者軟件都要用到這樣的方法,這里就對微信小程序?qū)崿F(xiàn)該功能進(jìn)行介紹,需要的朋友可以參考下2016-11-11umi插件開發(fā)仿dumi項目實現(xiàn)基礎(chǔ)路由解析
這篇文章主要為大家介紹了umi插件開發(fā)仿dumi項目實現(xiàn)基礎(chǔ)路由解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01