TypeScript(4) 進階型別 never、void、null與undefined

除了基本型別外,還有一些型別是比較不常見的,必須要先了解函式型別跟Union Type,所以放在這邊講,以下將個別介紹:

  • Void
  • Never
  • Null
  • Undefined

Void

void用於function的回傳值定義,代表這個function不會回傳任何值:

function returnNothing() : void{
    console.log('returnNothing')
}

Never

never這個型別跟void很像,但定義上更嚴謹,有些function根本不會結束,例如拋出例外,或是無窮迴圈,never就是用來代表這些函式行為的類型:

 function errorMsg(message:string): never{
    throw new Error(message);
 }

Null 與 Undefined

就算再JS裡面,null跟undefined依然是很特殊的型別。TS裡面,可以選擇要不要嚴格檢查,在tsconfig.json裡面可以設定strictNullChecks(預設為true)。

如為true,代表嚴格null檢查,變數只要設定為其他型別就不能為null(undefined)反過來講如為false,則代表所有型別變數都可以設為null(undefined),無需另外撰寫規則。

tsconfig.json :


"compilerOptions": {
    ...
    "strictNullChecks":false
    ...
}
let canBeNull:number = 12; 
canBeNull = null;//it's ok with  strictNullChecks:false

在嚴格null檢查的模式下,如要達成上面的行為,我們就必須用到Union Types:

let canBeNull:number |null  = 12; 
canBeNull = null //it's still ok even with strictNullChecks:true
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×