(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 の位置は「戻り値を持つ関数」も受け入れます——戻り値は単に無視されます。イベントシステムがほぼどんなコールバックでも受けられるのはこのためです。