でも、nullやundefinedでもプログラムが中断できたり(Node.jsのprocess.exit, 例外等)、無限ループできる、となると、ボトム型というのは誤りなんじゃないかなぁ、と思うのだけど。それだけを示す型がnever型であり、これこそがボトム型であるはず。この説明は誤りである気がする #fedibird
https://typescript-jp.gitbook.io/deep-dive/recap/null-undefined
nullやundefinedは戻り値として返されるのに対し、neverは戻り値を返したらアウトですからね #fedibird
おそらく、部分型関係は、こうなっていると思われる #fedibird
never <: undefined <: null <: number, string, boolean, ...
厳密には、nullとundefined双方にnullとundefinedの性質を持たせている、といったところだろうが(これであれば、never <: null, undefined <: ...となるし、null ≠ undefinedの説明もつく) #fedibird
あ、そうか。 #TypeScript って構造的部分型を採用しているから、null <: undefinedであり、undefined <: nullっていうのは正しいのか #fedibird
だから実質的にnull = undefinedと言えるのでは?と言うと、ほかの人が混乱を引き起こしそうなので、これ以上は深堀りせずに、とりあえず、null ≠ undefinedってことにしとこう。TSのnullの話終わり #fedibird
null <: undefinedだし、undefined <: nullっていうちょっと不思議な部分型関係で(しかしnull = undefinedではない)、そのためにnullかundefined、どちらかの上位型であれば、その部分型がnull, undefinedになるってことかな #fedibird