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 を使い、使用箇所で絞り込んでください。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%