見出し画像

TypeScript 入門の記録(52)プロを目指す人のためのTypeScript入門(36)関数の型(2)

ゴールデンウィークも最終日、明日から日常に戻ります。連休中にやりたかったことも色々ありましたが、クローゼットの整理をしたり掃除をしたり、家のことに時間を使うことが多かった休み期間でした。気を取り直して、「プロを目指す人のためのTypeScript入門」第4章「関数」の続き、今日も「関数の型」について学習します。

関数の型

関数そのものの型である「関数型」について、前回やりのこした関数の省略記法、コールシグネチャについて学習します。

アロー関数の省略記法

アロー関数式の引数が1つだけで、引数に型注釈が無い場合に引数の () が省略できます。

引数の型注釈の省略ができる場合

ここから更に、(x) の () が省略できるので、下図のように x => x % 3 === 0 と表記できます。すっきり!

更に、型注釈が省略できる引数の()を省略できる

コールシグネチャ

TypeScriptで関数型を表現する方法として、コールシグネチャ (call signature) があります。コールシグネチャは、オブジェクト型の中で使用できる構文で、(引数リスト) : 戻り値の型; と表記します。コールシグネチャを使用して、プロパティを持つ関数の型を表現することが可能です。関数もまたオブジェクトの一種なので、このような表現が可能なんですね。他のプログラミング言語では、関数は与えられた引数に対する戻り値を定義しますが、TypeScriptでは、関数がプロパティも持つことができるというところが自由度が高いなと思いました。

プロパティを持つ関数のコールシグネチャ

コールシグネチャは、クラスのプロパティとメソッドの関係に似ていると感じましたが、関数の引数と戻り値の定義と並列にプロパティを持つところが違いかな~と思いました。これも、何度も使って自然に使えるようになりたいです。オブジェクト型は複数のコールシグネチャを持つこともできるそうで、パラメータと戻り値の組み合わせを複数持たせることが可能です。

複数のコールシグネチャを持たせることができるけれど。。。

そこまではわかったのですが、その関数型を適用するオブジェクトの中身をどう定義すれば良いのかわかっていないので、ここは宿題にして今日の学習はここまでにします。この宿題は、次回までに解決できるといいな。

いいなと思ったら応援しよう!