name(arg: T): R 関数の型注釈
最終更新:2026-10-22
name(arg: T): R 関数の型注釈
関数の注釈は、パラメータと戻り値の型を明示します。呼び出し側は「何を渡し、何が返るか」をひと目で把握でき、誤った型はコンパイル時に弾かれます。注釈がなくても TS の推論が補ってくれますが、明示的な注釈は公開 API の基本マナーです。
| グループ | 関数とクラス |
|---|---|
| 種類 | 構文 |
| strict モード | 不要 |
ℹ️ 説明 エディタは TypeScript を JavaScript にトランスパイルして実行します(型チェックなし)。型チェック結果は各サンプルの出力を参照してください。
📝 構文
// 送料 = 基本料金 + 追加料金
function shippingFee(weightKg: number, express: boolean): number {
return 8 + weightKg * (express ? 3.5 : 1.5);
}
const calc: (w: number, express: boolean) => number = shippingFee;
// 意味のある戻り値はない → void
function notify(msg: string): void {
console.log(msg);
}
⚙️ パラメータ
| weightKg: number | パラメータ注釈:パラメータ名の後にコロンと型を書きます。誤った型(文字列など)を渡すとコンパイルエラーになります |
|---|---|
| ): number | 戻り値注釈:パラメータリストの後に書き、すべての return 文がその型と互換であることを強制します |
| void | 「意味のある戻り値がない」ことを表します。呼び出し側はその結果を利用すべきではありません |
戻り値:戻り値の型はパラメータリストの後ろに書きます(: number)。コンパイラは各 return 文がその型と互換であるかを一つずつ検査し、省略した場合は関数本体から推論されます。
▶ サンプル
下のコードを編集して「試す」を押すと、トランスパイル実行結果を確認できます:
出力:
通常: 11 円
速達: 15 円
(トランスパイル後の実行出力。shippingFee(2, "yes") はコンパイルエラーになります——第2パラメータは boolean でなければなりません)
💡 ポイント
ℹ️ 説明 戻り値の型は通常省略できます(推論は賢いです)が、エクスポートされる公開関数は明示的に注釈するのが推奨です——実装の変更によって外部の型が密かに変わるのを防げます。
⚠️ 注意 パラメータ注釈は省略できません。変数と異なり、単独の関数のパラメータに型注釈がないと(noImplicitAny 有効時)そのままエラーになります——TS は呼び出し側が何を渡すか推測できないためです。
💡 ヒント コールバックのパラメータに自分で注釈を書く必要はありません。変数やパラメータにすでに関数型が宣言されていれば、実装本体のパラメータは自動的に型を得ます(文脈的型付け。contextual-typing の項を参照)。
🏷️ 関連関数とクラス
💡 関連ケース
ケースは今後追加予定です。
📚 関連チュートリアル
❓ よくある質問
Q 戻り値の注釈はいつ必須になりますか?
A 3つの典型的な場面があります:エクスポートされる公開 API、再帰関数、そして推論結果が期待外れのとき(ユニオン型が拡大されるなど)。日常の内部関数は推論に任せて構いません。
Q : void と : undefined に違いはありますか?
A あります。void は「戻り値を気にしない」ことを意味し、任意の戻り値型の関数を割り当てられます。undefined は具体型であり、関数は実際に undefined を返す(明示的な return を書く)必要があります。
Q パラメータの型を any と書いてもよいですか?
A コンパイルは通りますが推奨されません。any はそのパラメータと戻り値へのすべての検査を無効化します。まず正確な型を優先し、本当に「任意」を許す場合は unknown を使い、使用箇所で絞り込んでください。