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