お知らせ
現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
process.exit()
のラッパーだったり、throw
する関数だったりして、戻り値がnever
を取る関数で、TypeScript上、後続処理がデッドロジックになるものを作る方法。
Env | Ver |
---|---|
TypeScript | 5.4.5 |
process.exit()
を書くと次の行以降がデッドロジック扱いされるが、これをやりたい。
普通に実装して型推論に任せてもうまくいかない。
例えば次の左図の関数の戻り値型はnever
だが、右図ではデッドロジックとならない。
これは次のように戻り値の型にnever
を直書きしても機能しない。
次の左図のように関数そのものの型を作ると解決できる。右図を見るとデッドロジックになっていることが確認できる。
別の関数から呼んだときに、呼び側の関数の戻り値型を正しくするためだ。下図はデッドロジックになっていない状態のときのものだが、処理が死なずに通り抜けてしまうのでundefined
が帰ることになっており、この関数の呼び下でundefined
だった時の処理を書く必要が出てきてしまう。
しかし、デッドロジック扱いになっていれば下図のように戻り値の型が期待した通りの内容になる。この関数がundefined
を返すことはないので、この状態を実現するために行っている。