スキップしてメイン コンテンツに移動

TypeScriptのneverとvoid型の違い

 TypeScriptにおける`never`型と`void`型は、どちらも特殊な型ですが、異なる用途と意味を持っています。


1. **void型** (`void`):

   `void`型は、関数が値を返さないことを示すために使用されます。つまり、関数が何らかの結果を返さない場合、その戻り値の型は`void`です。一般的に、関数内で`return`文を使用して値を返さない場合に`void`型が利用されます。


   ```typescript

   function showMessage(): void {

       console.log("Hello, world!");

   }


   const result: void = showMessage(); // showMessage関数が値を返さないため、resultの型はvoid

   ```


2. **never型** (`never`):

   `never`型は、絶対に値を持たない型です。これは、例外をスローしたり、無限ループに陥ったりするなど、実行が完全に終了しない場合に使用されます。また、他の型のサブタイプとしても機能するため、どの型とも互換性がありません。


   ```typescript

   function throwError(message: string): never {

       throw new Error(message);

   }


   function infiniteLoop(): never {

       while (true) {

           // ここに何か処理を記述すると、関数が終了しない

       }

   }


   const neverValue: never = throwError("An error occurred"); // throwErrorは戻り値を持たないため、never型

   ```


要するに、`void`型は関数が値を返さないことを示すための型であり、`never`型は値を持たない型であり、通常は異常終了や無限ループなどの状況で使用されます。例外が投げられたり、無限ループに陥ったりする場合、関数は正常に終了しないため、その戻り値の型は`never`となります。

コメント

このブログの人気の投稿

gitよく使うコマンド集

よく使うgitのコマンド集をまとめてみた。 1.ローカルリポジトリの登録  #git init 2.gitの状態を確認  #git status 3.gitのファイルを追加  #git add . 4.ローカルのマスタにコミットする  #git commit -m "体温管理アプリの初期化" 5.リモートリポジトリを登録する  #git remote add origin https://github.com/ユーザーID/リポジトリ名  例)git remote add origin https://github.com/githubkyo/taionkanri 6. リモートリポジトリの変更履歴の取得 git fetch origin master 7.差分のあるファイル名を表示 > git diff --name-status ローカルブランチ名 origin/リモートブランチ名 【例】 > git diff --name-status master origin/master 8.リモートのファイルのみをローカルに反映する。 git checkout origin/master --src/Eccube/Resource/template/default/default_frame.twig 9.別ブランチをマスタへマージする git checkout master git merge other_branch 以上で、随時更新していく予定。

XMPPとは

XMPPとは、インスタントメッセージソフトなどに使われるXMLベースのオープンソース・プロトコルである。2004年に、IETF(Internet Engineering Task Force)でIMPP(Instant Messaging and Presence Protocol)の標準案に選ばれた。 Jabber社が開発したインスタントメッセージソフト「Jabber」のプロトコルを、セキュリティ機能などを追加して改良したものである。具体的な機能としては、インスタントメッセージソフトで必要不可欠となるメッセージの送受信や、プレゼンス状態の通知などを受け持っている。 XMPPは柔軟性や拡張性が高いのが特徴であり、JabberやGoogle Talkなどのインスタントメッセージソフトで採用されている。 XMPPを使っているサービスの例はCERN、アメリカの軍事衛星、BBC News、MLB、DuckDuckGoなどがある。また、SlackやHipchatなどのXMPP連携を行うコミュニケーションサービスも数多くある。 時間があれば、ぜひ使ってみたいと思います。