ts中的void和never類型及區(qū)別
ts中的void和never類型
void
表示沒有任何類型
// 沒有返回值的函數(shù),其返回值類型為 void function warnUser(): void { console.log("void"); } // 申明為 void 類型的變量,只能賦予 undefined 和 null let unusable: void = undefined;
可以用到void
有以下幾種情況
- 函數(shù)沒寫return
- 只寫了 return, 沒有具體的返回值
- return 的是 undefined
// 如果什么都不寫,此時,add 函數(shù)的返回值類型為: void const add = () => { // } // 如果return之后什么都不寫,此時,add 函數(shù)的返回值類型為: void const add = () => { return } const add = (): void => { // 此處,返回的 undefined 是 JS 中的一個值 return undefined } // 這種寫法是明確指定函數(shù)返回值類型為 void,與上面不指定返回值類型相同 const add = (): void => { // }
never
表示永遠不會有值的一種類型,任何類型都不能賦值給 never
類型的變量
應用場景???(暫時沒找到)
// 返回never的函數(shù)必須存在無法達到的終點 function infiniteLoop(): never { while (true) { } } // 這個函數(shù)不能申明其返回值類型 function warnUser(): void { console.log("void"); } function add (a?: number, b: number = 1) { // ?跟在參數(shù)名字的后面,表示可選的參數(shù) // 注意:可選參數(shù)只能在 必須參數(shù)的后面 // 如果可選參數(shù)在必選參數(shù)的前面,會報錯 // 設置了默認值之后,就是可選的了,不寫就會使用默認值; 可選的參數(shù)一定有值。它們不能一起使用。優(yōu)先使用默認值 console.log(111); }
補充:void類型和never類型
void類型和never類型都是ts新增的類型,這兩者的共同點是都常見用于聲明函數(shù)的返回值的類型,這里我們把它們兩放在一起介紹有助于大家區(qū)分。 void,表示函數(shù)返回值空,即undefined。 never類型則是表示函數(shù)沒有返回值,也絕不會(never)有返回值的情況發(fā)生。
void類型
可以使用變量聲明方法去聲明void類型,除了underfined之外不能對void類型變量賦值(null也不行),所以平時聲明一個void類型的變量沒有什么大用,我們一般也只有在函數(shù)沒有返回值時去聲明。
function fn():void{ return underfined }
需要注意的是 return null 不能使用于void類型的函數(shù),所以這里我來科普下null和underfined的區(qū)別和聯(lián)系。
null和underfined相同點: 兩者都是js的基本數(shù)據(jù)類型,都表示“無,沒有” 在if 或者 == 隱式類型轉(zhuǎn)化中,null和underfined是相同的,都表示false
null和underfined不同點:
null表示"沒有對象",即該處不應該有值。典型用法是:
(1)作為函數(shù)的參數(shù),來表示該函數(shù)的參數(shù)不是對象
(2)作為對象原型鏈的終點
undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是:
(1)變量被聲明了,但沒有賦值時,就等于undefined。
(2)對象沒有賦值的屬性,該屬性的值為undefined。
(3)函數(shù)沒有返回值時,默認返回undefined。
(4)調(diào)用函數(shù)時,應該提供的參數(shù)沒有提供,該參數(shù)等于undefined。
never類型
never類型,也是用于函數(shù)的返回值,表示函數(shù)永遠不會返回結(jié)果,js中有函數(shù)不返回結(jié)果的情況,一般不寫return 就返回 undefined,但是這個never是什么都不返回。
比如js 的拋出錯誤異常函數(shù),就不會返回任何結(jié)果:
function err(mag:string):never{ throw new Error(msg); }
到此這篇關于ts中的void和never類型的文章就介紹到這了,更多相關ts void和never內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用bootstrap莫名其妙出現(xiàn)橫向滾動條的問題及解決
這篇文章主要介紹了使用bootstrap莫名其妙出現(xiàn)橫向滾動條的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11TypeScript遍歷Array的方法(for,forEach,every)
本文主要介紹了TypeScript遍歷Array的方法(for,forEach,every),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06