アロー関数の型

関数そのものを表す型

これまでは引数と戻り値に別々に型を付けてきました。関数はまとめて 1 つの型としても書けます。

(title: string) => string

読み方は、文字列を 1 つ受け取って文字列を返す関数、です。矢印の左が引数、右が戻り値です。この形を関数型と呼びます。

変数に入れるときに使う

関数型が効くのは、関数を変数に入れるときです。変数の側に型を書きます。

const workLabel: (title: string, count: number) => string = (title, count) => { return title + "ほか" + count + "件"; };

注目してほしいのは、右側のアロー関数に型を書いていないことです。変数の型で引数が何なのかは決まっているので、TypeScript がそこから titlestringcountnumber だと決めてくれます。これを文脈からの型付けと呼びます。

書く場所を右に寄せることもできます。どちらも同じ意味です。

const workLabel = (title: string, count: number): string => { return title + "ほか" + count + "件"; };

左に寄せると、この変数に何が入るのかが名前のとなりで読めます。右に寄せると、関数の定義としてふつうに読めます。同じ形の関数を何度も入れ替える場所では左、1 回きりの定義なら右、と考えると迷いません。

型が合わない関数は入らない

変数に関数型を書いておくと、あとから別の関数を入れ直したときにも検査が働きます。

const workLabel: (title: string, count: number) => string = (title) => { return title.length; }; // エラー Type 'number' is not assignable to type 'string'.

戻り値が数値になってしまったことが、代入した行で止まります。

手を動かす

演習では、ゆめさくの作品数を一行にまとめる関数を変数に入れます。アロー関数の側ではなく、変数の側に関数型を書いてください。引数の型は変数の型から決まるので、右側には書かないままで通ります。

要件

  1. 変数 workSummary に関数型の注釈を書く
  2. 関数型は、文字列と文字列の配列を受け取って文字列を返す形にする
  3. アロー関数の引数には型を書かない
  4. 中身の処理は変えない

入出力例

workSummary("ゆめさく", ["プロフィールサイト","自己紹介カード","スキル一覧の表"])"ゆめさくさんの作品は3件です" workSummary("たなか", [])"たなかさんの作品は0件です" workSummary("さとう", ["プロフィールサイト"])"さとうさんの作品は1件です" workSummary("いのうえ", ["プロフィールサイト","自己紹介カード","スキル一覧の表","ブログ"])"いのうえさんの作品は4件です"

ヒント

生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部
main.ts
main.ts
学習モード

メモ

アロー関数の型

⌘S で保存