TypeScriptのnever型とは?初心者向けに解説します。

TypeScriptの日本語ドキュメントが分かりやすかったでの、こちらを参考に解説しますが、

 

 

never型が自然発生する状況

 

Neverという型が返されるとき、自然発生するケースは二種類あります。

 

一つ目は、完全に絶対にリターンされない関数が呼び出されたとき、

 

例えば無限ループなんかがその例です。

 

while(true){}

 

そして二つ目は、必ず絶対エラーを返す関数が呼び出された時です。

 

function foo(){throw new Error('Not Implemented')}

 

こういう関数が出現したときは、関数の戻り値はneverが返ってきます。

 

neverアノテーションは自分で使うことも可能

 

もちろん、このアノテーションを自分でも使用できます

 

let foo: never; // Okay

 

しかし、neverは、neverだけを代入することができますので、普通の値は入りません。

 

let foo: never = 123; // Error: Type number is not assignable to never

// Okay as the function's return type is `never`
let bar: never = (() => { throw new Error(`Throw my hands in the air like I just don't care`) })();

 

上記の例では、エラーを発生するとNeverが返ってくるので、代入可能です。

 

voidとneverは違う

 

そもそも、何も返さない関数がvoidであるので、

 

returnを返すことのない関数(または常にスローする)は、neverを返すので、

 

これらは別物です。

 

また、voidは代入することが出来ますが、

 

neverはnever以外のものに代入することはできません。

 

これも、この二つの違いです。

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

TypeScript

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です