(arg) => R アロー関数の型

最終更新:2026-10-22

(arg) => R アロー関数の型

アロー関数は型注釈の構文を内蔵しています:パラメータの後のコロン、式そのものが戻り値です。アロー関数の変数に明示的に関数型を宣言すると、本体のパラメータと戻り値がすべて自動的に連動します。ソートの比較器やマッパーなど一度きりのコールバックにおける推奨スタイルです。

グループ関数とクラス
種類構文
strict モード不要

ℹ️ 説明 エディタは TypeScript を JavaScript にトランスパイルして実行します(型チェックなし)。型チェック結果は各サンプルの出力を参照してください。

📝 構文

const byPriceAsc: (a: Product, b: Product) => number = (a, b) => a.price - b.price;

// ジェネリック アロー関数(.tsx ファイルでは JSX タグとの衝突を避けるため <T,> と書く)
const identity = <T,>(v: T): T => v;

⚙️ パラメータ

(a: Product, b: Product) => number変数の関数型注釈:右側の実装本体の中の a/b は自動的に型を得ます
<T,>(v: T): Tジェネリックなアロー関数:型パラメータはパラメータリストの前に書きます。末尾カンマは .tsx での曖昧さ回避に使います

戻り値:式本体の戻り値はその式の型です。ブロック本体は return を使い、戻り値の型は明示的に注釈できます。

▶ サンプル

下のコードを編集して「試す」を押すと、トランスパイル実行結果を確認できます:

出力:

Mouse:89 | Keyboard:199 | Monitor:899

(トランスパイル後の実行出力。比較器がブール値(a.price < b.price)を返すのは型エラーです——sort は number を期待します)

💡 ポイント

ℹ️ 説明 アロー関数には自分自身の this がありません。メソッドのコールバックやイベントハンドラの中で外側の this をそのまま使えます。これが普通の関数との最も重要な実行時の違いです。
⚠️ 注意 式本体でオブジェクトリテラルを返すには括弧が必要です:() => ({ key: v })。() => { key: v } と書くとブロック本体と解釈され undefined を返します。
💡 ヒント 比較器は a.price - b.price(負/ゼロ/正)を返せば昇順になります。ブール値は絶対に使わないでください——Boolean 同士の減算はたまたま動くだけで意味が混乱し、型の上でも間違いです。
ケースは今後追加予定です。

📚 関連チュートリアル

❓ よくある質問

Q アロー関数と普通の関数で型の書き方に違いはありますか?
A 型のレベルでは完全に同じです。どちらも (params) => returnType です。違いは実行時の意味論(this、arguments、new できるか)にあります。
Q .tsx ファイルで <T>(v: T) がエラーになるのはなぜですか?
A ジェネリックの山括弧が JSX のタグ構文と衝突するためです。<T,>(末尾カンマ)や <T extends unknown> と書けば曖昧さを解消できます。
Q いつアロー関数の変数に型を注釈すべきですか?
A 変数に代入される、オブジェクトに格納される、またはエクスポート API になるときです。注釈があれば実装本体が文脈的型付けの恩恵を受けます。すでにパラメータ型の分かっている関数にインラインで渡す場合(sort(byPriceAsc) など)は省略できます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%