欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間: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 ;  //報(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)文章

最新評(píng)論