nullやundefinedを調べているうちに気になる記述を見つけました。
//戻り値がない関数の戻り値を取得したときもundefinedになります。
function func() {}
console.log(func());// =>undefined
戻り値がないときに使う型といえばvoidという印象があるので、どう使い分けるのか調べてみました。
戻り値のためのreturnがあるか?
まず、undefinedの場合はretuenがないとコンパイルエラーになります。
C言語同様、そもそも返り値がない想定なのがvoidです。
戻り値がない関数とvoid型 (void type) -サバイバルTypeScript
戻り値がないってどんな状況?
まず言えるのが、returnが必要ない例。(そりゃそうだ)
例えばconsole.logで表示させるだけとか、確実にundefinedでしか戻ってこない場合はvoidを検討するのもいいかもしれません。
他に思いついたのがエラーを起こしたとき。
でも調べてみると、「voidは呼び元には戻ってくるけど、返り値がない」とのこと。
エラーの場合は「そもそも呼び出し元に戻ってこない」ことが多いと思うので、また違うんだろうと思います。この場合に使うとしたら、never型かもしれません。
never型 is 何
never型は文字通り、「恒久的にない」場合に使われるそう。
voidが「値がない正常終了」に対して、neverが「正常終了を想定していない」場合に使用されます。
戻り値がvoid型のメソッドは『正常終了時になにも値を返さないメソッド』と言い換えられます。
https://nishinatoshiharu.com/diffrence-void-never/
一方、戻り値がnever型のメソッドは『正常終了しないのでなにも返ってこないメソッド』と言い換えられます。