直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解
正文
1、unknown是所有類型的父類型,其他類型都可以賦值給 unknown
let a: undefined = undefined; let b: null = null; let x2: unknown; x2 = a; //正確 x2 = b; //正確
2、never 是任何類型的子類型,可以賦給任何類型
let a: undefined = undefined; let b: null = null; function err(): never { // OK throw new Error('error'); } a = err(); //正確 b = err(); //正確
3、any可以賦值給任何類型,任何類型可以賦值給any,除了any不能賦值給never(但是never卻可以賦值給any)
let a: undefined = undefined; let b: null = null; let err: never; let y: any = 4; a = y; //正確 b = y; //正確 y = a; //正確 y = b; //正確 err = y ; //報(bào)錯(cuò) 不能將類型“any”分配給類型“never”。ts(2322)
4、子類型可以賦值給父類型。但是父類型不能賦值給子類型,必須加斷言
let v: void; let a: undefined = undefined; v = a; //正確 a = v; //錯(cuò)誤 不能將類型“void”分配給類型“undefined”。ts(2322) a = v as undefined; //正確
那么通常情況下,如果一個(gè)方法或組件的屬性,定義什么類型,我們傳入什么類型就完事了,為什么還要整理這張圖呢?
因?yàn)槲覀冇袝r(shí),并不能非常精確的定義一個(gè)類型,我們只想把一個(gè)子類型傳進(jìn)入,這樣它也能識(shí)別。
比如vue中:
<xx-upload :before-load="handleBeforeLoad"> //setup ts代碼 let handleBeforeLoad = ()=>{ }
這樣傳入會(huì)報(bào)錯(cuò),因?yàn)槟銜?huì)發(fā)現(xiàn)before-load傳入的類型是個(gè)由命名空間定義的自定義類型。
要么你精確的傳入匹配的類型
import type { UploaderBeforeRead } from "xx/lib/upload/types" let beforeRead:UploaderBeforeRead = (file:File | File[]):boolean=>{ }
要么傳入一個(gè)any,接收一個(gè)any參數(shù),因?yàn)榈谌龡l中"any可以賦值給任何類型,任何類型可以賦值給any"就可以解決。
let beforeRead:any = (file:any):boolean=>{ }
以上就是直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解的詳細(xì)內(nèi)容,更多關(guān)于typescript隱式類型轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序中button組件的邊框設(shè)置的實(shí)例詳解
這篇文章主要介紹了微信小程序中button組件的邊框設(shè)置的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能夠掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09Skypack布局前端基建實(shí)現(xiàn)過(guò)程詳解
這篇文章主要為大家介紹了Skypack布局前端基建過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07業(yè)務(wù)層hooks封裝useSessionStorage實(shí)例詳解
這篇文章主要為大家介紹了業(yè)務(wù)層hooks封裝useSessionStorage實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08徒手實(shí)現(xiàn)關(guān)于JavaScript的24+數(shù)組方法
數(shù)組是我們?nèi)粘9ぷ髦杏玫淖铑l繁的一類數(shù)據(jù)結(jié)構(gòu),能幫助我們解決許多問(wèn)題,而其本身也包含接近33個(gè)之多的方法,做了一個(gè)腦圖分類如下,熟練使用數(shù)組的你,是否想知道他們內(nèi)部的實(shí)現(xiàn)原理呢?接下來(lái)小編就帶大家進(jìn)入主題,希望能幫助到你2021-09-09微信小程序 網(wǎng)絡(luò)API 上傳、下載詳解
這篇文章主要介紹了微信小程序 網(wǎng)絡(luò)API 上傳、下載詳解的相關(guān)資料,需要的朋友可以參考下2016-11-11Qiankun Sentry 監(jiān)控異常上報(bào)無(wú)法自動(dòng)區(qū)分項(xiàng)目解決
這篇文章主要為大家介紹了Qiankun Sentry 監(jiān)控異常上報(bào)無(wú)法自動(dòng)區(qū)分項(xiàng)目解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11