(arg: T) => R 関数型式

最終更新:2026-10-22

(arg: T) => R 関数型式

関数型式は「ある種の関数の形」を記述します:パラメータリスト + => + 戻り値((value: string) => string | null)。これを type エイリアスとして保存すれば、コールバック、バリデータ、ミドルウェアなど「関数を値として扱う」場面に再利用可能な型名が得られます。

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

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

📝 構文

type Validator = (value: string) => string | null;
type Comparator<T> = (a: T, b: T) => number;

const required: Validator = (v) => (v.length > 0 ? null : "Required");

⚙️ パラメータ

(value: string)パラメータリスト:名前は単なるドキュメントで、実際の対応は位置で決まります
=> string | null戻り値の型:=> は「返す」と読みます。ここでは null が「エラーなし」を表す約束です

戻り値:関数型は純粋な型の記述であり、実行時コードを生成しません。この型の変数に代入すると、コンパイラがパラメータと戻り値の互換性を項目ごとに検査します。

▶ サンプル

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

出力:

["必須項目です","メールアドレスの形式が正しくありません"]
[]

(トランスパイル後の実行出力。パラメータが string でない関数を rules に入れるとコンパイルエラーになります)

💡 ポイント

ℹ️ 説明 型の中のパラメータ名はただのヒントです。(v: string) => R と (value: string) => R は同じ型であり、実際に照合に関与するのは位置と型です。
💡 ヒント プロジェクトで繰り返し現れる関数の形(イベントハンドラ、ローダー、ミドルウェア)はすべて type エイリアスにする価値があります——シグネチャを変えるときに1か所だけ直せば済みます。
⚠️ 注意 戻り値が string | null のとき、呼び出し側が受け取るのは「null の可能性がある」値なので、必ず null チェックを先に行ってから使います。「null はエラーなしを意味する」という約束はチームの規約としてドキュメントに明記しましょう。
ケースは今後追加予定です。

📚 関連チュートリアル

❓ よくある質問

Q 関数型式と、プロパティを持つ呼び出し可能型の違いは何ですか?
A (v: string) => R は呼び出しだけを記述します。interface { (v: string): R; version: string } は呼び出しに加えてプロパティも持ちます(呼び出し可能なオブジェクト)。普通のコールバックには型式で十分です。
Q コールバックのパラメータにはまだ注釈が必要ですか?
A 必要ありません。const v: Validator = (v) => ... のパラメータ型は Validator という文脈から提供されます(文脈的型付け)。注釈が必須なのは独立した関数リテラルだけです。
Q void を返す関数型にはどんな特異性がありますか?
A () => void の位置は「戻り値を持つ関数」も受け入れます——戻り値は単に無視されます。イベントシステムがほぼどんなコールバックでも受けられるのはこのためです。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%