never 型は、どういう値の型ですか。
決して存在しない値の型です。必ず例外を投げる関数の戻り値や、絞り込みで可能性が残っていない分岐に現れます。void は「終わるが値を返さない」で、別物です。
面接官が見ているのはnever を「何も無い」ではなく「起こりえない」と理解しているか。
よくある答えと、面談でどう見られるか
- 決して存在しない値の型。必ず例外を投げる関数の戻り値や、絞り込みで残りが無くなったときに現れる
その通りです。網羅性チェックに使えるのはこの性質のためです。 - undefined と同じ
違います。undefined は値が存在しますが、never 型の値は存在しません。 - 戻り値が無い関数の型(void と同じ)
近いですが違います。void は「終わって何も返さない」、never は「そもそも終わらない(例外か無限ループ)」です。 - any の反対で、型の検査を強くするための型
そういう役割ではありません。値が存在しえないことを表す型です。
模範解答
決して存在しない値の型です。必ず例外を投げる関数や、終わらない関数の戻り値は never になります。
絞り込みの最後にも現れます。string | number を typeof で string と number に分けたあと、残りの分岐では x は never になります。可能性が残っていないからです。
これを使うと網羅性チェックが書けます。switch の default で、絞り込まれた値を never 型の変数に代入しておくと、ユニオンに新しいメンバーを足したときに、処理を書き忘れた箇所がコンパイルエラーになります。
void とは別物です。void は「終わるが、意味のある値を返さない」、never は「そもそも普通に終わらない」です。
出典(一次資料)
対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。