最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解

 更新時間:2022年07月29日 09:11:12   作者:寒水寺一禪  
這篇文章主要為大家介紹了直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jì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 ;  //報錯 不能將類型“any”分配給類型“never”。ts(2322)

4、子類型可以賦值給父類型。但是父類型不能賦值給子類型,必須加斷言

let v: void;
let a: undefined = undefined;
v = a;  //正確 
a = v;  //錯誤 不能將類型“void”分配給類型“undefined”。ts(2322)
a = v as undefined;   //正確

那么通常情況下,如果一個方法或組件的屬性,定義什么類型,我們傳入什么類型就完事了,為什么還要整理這張圖呢?

因為我們有時,并不能非常精確的定義一個類型,我們只想把一個子類型傳進(jìn)入,這樣它也能識別。
比如vue中:

<xx-upload  :before-load="handleBeforeLoad">
//setup ts代碼
let handleBeforeLoad = ()=>{
}

這樣傳入會報錯,因為你會發(fā)現(xiàn)before-load傳入的類型是個由命名空間定義的自定義類型。

要么你精確的傳入匹配的類型

import type { UploaderBeforeRead } from "xx/lib/upload/types"
let beforeRead:UploaderBeforeRead = (file:File | File[]):boolean=>{
}

要么傳入一個any,接收一個any參數(shù),因為第三條中"any可以賦值給任何類型,任何類型可以賦值給any"就可以解決。

let beforeRead:any = (file:any):boolean=>{
}

以上就是直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解的詳細(xì)內(nèi)容,更多關(guān)于typescript隱式類型轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

江孜县| 嘉定区| 阜新| 东乌珠穆沁旗| 怀化市| 桐柏县| 普兰店市| 苏尼特右旗| 太仆寺旗| 江城| 新津县| 沙河市| 郸城县| 秀山| 河源市| 镇原县| 新绛县| 咸宁市| 马边| 高清| 长武县| 甘洛县| 孟州市| 芮城县| 阜康市| 苗栗县| 海安县| 徐汇区| 门源| 诸暨市| 松溪县| 行唐县| 耒阳市| 会昌县| 胶州市| 郸城县| 改则县| 榆社县| 广东省| 确山县| 开平市|