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
// 如果什么都不寫,此時(shí),add 函數(shù)的返回值類型為: void
const add = () => {
//
}
// 如果return之后什么都不寫,此時(shí),add 函數(shù)的返回值類型為: void
const add = () => {
return
}
const add = (): void => {
// 此處,返回的 undefined 是 JS 中的一個(gè)值
return undefined
}
// 這種寫法是明確指定函數(shù)返回值類型為 void,與上面不指定返回值類型相同
const add = (): void => {
//
}never
表示永遠(yuǎn)不會(huì)有值的一種類型,任何類型都不能賦值給 never 類型的變量
應(yīng)用場(chǎng)景???(暫時(shí)沒找到)
// 返回never的函數(shù)必須存在無法達(dá)到的終點(diǎn)
function infiniteLoop(): never {
while (true) {
}
}
// 這個(gè)函數(shù)不能申明其返回值類型
function warnUser(): void {
console.log("void");
}
function add (a?: number, b: number = 1) {
// ?跟在參數(shù)名字的后面,表示可選的參數(shù)
// 注意:可選參數(shù)只能在 必須參數(shù)的后面
// 如果可選參數(shù)在必選參數(shù)的前面,會(huì)報(bào)錯(cuò)
// 設(shè)置了默認(rèn)值之后,就是可選的了,不寫就會(huì)使用默認(rèn)值; 可選的參數(shù)一定有值。它們不能一起使用。優(yōu)先使用默認(rèn)值
console.log(111);
}補(bǔ)充:void類型和never類型
void類型和never類型都是ts新增的類型,這兩者的共同點(diǎn)是都常見用于聲明函數(shù)的返回值的類型,這里我們把它們兩放在一起介紹有助于大家區(qū)分。 void,表示函數(shù)返回值空,即undefined。 never類型則是表示函數(shù)沒有返回值,也絕不會(huì)(never)有返回值的情況發(fā)生。
void類型
可以使用變量聲明方法去聲明void類型,除了underfined之外不能對(duì)void類型變量賦值(null也不行),所以平時(shí)聲明一個(gè)void類型的變量沒有什么大用,我們一般也只有在函數(shù)沒有返回值時(shí)去聲明。
function fn():void{
return underfined
}需要注意的是 return null 不能使用于void類型的函數(shù),所以這里我來科普下null和underfined的區(qū)別和聯(lián)系。
null和underfined相同點(diǎn): 兩者都是js的基本數(shù)據(jù)類型,都表示“無,沒有” 在if 或者 == 隱式類型轉(zhuǎn)化中,null和underfined是相同的,都表示false
null和underfined不同點(diǎn):
null表示"沒有對(duì)象",即該處不應(yīng)該有值。典型用法是:
(1)作為函數(shù)的參數(shù),來表示該函數(shù)的參數(shù)不是對(duì)象
(2)作為對(duì)象原型鏈的終點(diǎn)
undefined表示"缺少值",就是此處應(yīng)該有一個(gè)值,但是還沒有定義。典型用法是:
(1)變量被聲明了,但沒有賦值時(shí),就等于undefined。
(2)對(duì)象沒有賦值的屬性,該屬性的值為undefined。
(3)函數(shù)沒有返回值時(shí),默認(rèn)返回undefined。
(4)調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供,該參數(shù)等于undefined。
never類型
never類型,也是用于函數(shù)的返回值,表示函數(shù)永遠(yuǎn)不會(huì)返回結(jié)果,js中有函數(shù)不返回結(jié)果的情況,一般不寫return 就返回 undefined,但是這個(gè)never是什么都不返回。
比如js 的拋出錯(cuò)誤異常函數(shù),就不會(huì)返回任何結(jié)果:
function err(mag:string):never{
throw new Error(msg);
}到此這篇關(guān)于ts中的void和never類型的文章就介紹到這了,更多相關(guān)ts void和never內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
認(rèn)識(shí)Knockout及如何使用Knockout綁定上下文
Knockout簡(jiǎn)稱ko,是一個(gè)輕量級(jí)的javascript類庫(kù),采用MVVM設(shè)計(jì)模式(即Model、view、viewModel),簡(jiǎn)單優(yōu)雅的實(shí)現(xiàn)了雙向綁定,實(shí)時(shí)更新,幫助您使用干凈的數(shù)據(jù)模型來創(chuàng)建豐富的、響應(yīng)式的用戶界面2015-12-12
js實(shí)現(xiàn)分享到隨頁面滾動(dòng)而滑動(dòng)效果的方法
這篇文章主要介紹了js實(shí)現(xiàn)分享到隨頁面滾動(dòng)而滑動(dòng)效果的方法,實(shí)例分析了javascript操作頁面元素滾動(dòng)效果的方法,需要的朋友可以參考下2015-04-04
Bootstrap每天必學(xué)之柵格系統(tǒng)(布局)
Bootstrap每天必學(xué)之柵格系統(tǒng),小編對(duì)Bootstrap柵格系統(tǒng)(布局)也很陌生,特分享整理這篇文章,感興趣的小伙伴們可以參考一下2015-11-11
JavaScript中數(shù)組sort()方法的基本使用與踩坑記錄
: js中用方法sort()為數(shù)組排序,這篇文章主要給大家介紹了關(guān)于JavaScript中數(shù)組sort()方法的基本使用,sort()方法已經(jīng)可以滿足我們對(duì)數(shù)組的很多處理需求,需要的朋友可以參考下2021-06-06
JavaScript基于對(duì)象去除數(shù)組重復(fù)項(xiàng)的方法
這篇文章主要介紹了JavaScript基于對(duì)象去除數(shù)組重復(fù)項(xiàng)的方法,結(jié)合實(shí)例形式分析了javascript數(shù)組去重的操作步驟與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-10-10

