Open2

TypeScriptのnever型について

high-ghigh-g

モチベ

neverについて、「値を持たない型」という検索結果が出てくるが、それをvoid, null, undefinedなどと切り分けて口頭で説明できるレベルで理解する。

とりあえず、neverについての記事を読み漁るところから。

参考

https://typescriptbook.jp/reference/statements/never
https://qiita.com/macololidoll/items/1c948c1f1acb4db6459e
https://zenn.dev/axoloto210/articles/advent-calender-2023-day10
https://qiita.com/hukuryo/items/526f6b86caeb74a94064
https://nakamuuu.blog/characteristics-and-uses-of-the-never-type-in-typescript/
https://borderlesss.net/typescript-void-never/
https://typescript-jp.gitbook.io/deep-dive/type-system/never

high-ghigh-g

neverが発生する場面

  • 確実にErrorがthrowされ、処理が最後まで到達しない関数の戻り値はnever型
  • エラーを吐き出す関数を戻り値としている場合の戻り値もnever型
  • while(true) のような無限ループが発生する場合の戻り値もnever型

voidとの違い

  • void型は、関数が正常に終了した場合、何も返さないときの型
  • never型は、関数がそもそも正常に終了しないときの型