メインコンテンツまでスキップ

関数の型定義 (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;
};

この書き方はオーバーロードで目にする機会があるでしょう。オーバーロードについては後述しますのでこのまま読み進めてください。