関数の型定義 (function type declaration)
匿名関数、匿名かつアロー関数では変数に代入していることからわかるように、関数も型による表現が可能です。
ページの初めに登場した関数increment()
では関数の型はこのようになります。
typescript
(num: number) => number;
typescript
(num: number) => number;
これは匿名かつアロー関数と少々宣言が異なります。厳密には戻り値の位置が異なります。匿名かつアロー関数は、実体を除けば次の形をしています。
typescript
(num: number): number => {...};
typescript
(num: number): number => {...};
オブジェクト風の書き方もあります。
typescript
type Increment = {(num: number): number;};
typescript
type Increment = {(num: number): number;};
この書き方はオーバーロードで目にする機会があるでしょう。オーバーロードについては後述しますのでこのまま読み進めてください。