除了基本型別外,還有一些型別是比較不常見的,必須要先了解函式型別跟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