見出し画像

TypeScript 入門の記録(51)プロを目指す人のためのTypeScript入門(35)関数の型(1)

「CircleCI から GitHub Actions に移行したいな~。」という野望は、酒井(@sakay_y)さんに相談したところ、「これは、GitHub.comのActionsにするのが良いのでは?」と、酒井(@sakay_y)さんが引き取って進めてくれることになりました。これで、自分が原因で進捗が出せていない状態を脱出できました(いいのか?)さて前回の学習から2週間空いてしまいましたが、「プロを目指す人のためのTypeScript入門」第4章「関数」の続き、今日は「関数の型」について学習します。

関数の型

関数の引数の型、関数の戻り値の型と同様に、関数そのものの型である「関数型」について学習します。

関数型の記法

関数型は (引数リスト)=>戻り値の型 と表し、引数リスト部は 引数: 型 を ',' で区切ったものです。テキストの例の関数を、実際にVSCodeで見てみると、関数型が確認できます。

VSCodeで関数オブジェクトをマウスでポイントすると関数型が確認できる

VSCodeなどのエディタでどの変数が不足しているかを提示してくれる場合に、どの引数が漏れているか確認しやすいように、引数名もわかりやすいものにしておくと良さそうです。ちょっとした工夫でエディタの支援機能を活用することができて、その分ミスも減らせそうです。

VSCodeで不足している引数がrepeatNumであることを提示してくれている例

戻り値の型注釈は実装ミス予防に活用できる

関数の戻り値は省略することができ、「戻り値を明示する」か「戻り値を型推論に任せる」という2つの選択肢があります。アロー関数を含み、戻り値の型が明示されていれば関数内部で戻り値の型チェックができるので、実装ミスを減らす効果が期待できるようです。
例えば、戻り値の型注釈がある関数に return 文が漏れていた場合は、値を返す必要があるというコンパイルエラーが発生します。

引数の型注釈が省略可能な場合がある?

関数の戻り値は省略可能ですが、引数の型注釈は原則省略できません。しかし、式の型が先にわかっている場合に、その式の内部に対して型推論が可能であれば引数の型注釈が省略されても許されます。「どういうこと?」と不思議に感じたときは、実際に試してみるのが一番です。

関数xRepeatの引数numはtype Fのnumber型の引数と推論できる

ああ、なるほど、そんなに突飛な話ではありませんでした。このような型推論を contextual typing と呼ぶそうです。

関数型については、まだ「コールシグネチャによる関数型の表現」が残っていますが、今日はここまでにします。明日、続きをやるかもしれませんが、ブログに書くのは次の週末の予定です。

この記事が気に入ったらサポートをしてみませんか?