Parameters<T> Parameters(ConstructorParameters/InstanceType を含む)

最終更新:2026-10-22

Parameters<T> Parameters(ConstructorParameters/InstanceType を含む)

Parameters<T> は関数型 T のパラメータのリストを取り、結果はタプル型になります。これがあれば「引数の束」を丸ごと格納、受け渡し、転送でき、[string, number, string?] のようなパラメータのリストを手書きする必要がありません。

グループユーティリティ型
種類型
strict モード不要

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

📝 構文

type Parameters<T extends (...args: any) => any> =
  T extends (...args: infer P) => any ? P : never;

// 使い方
type SessionArgs = Parameters<typeof createSession>;  // [string, number, string?]

⚙️ パラメータ

T関数型です。実務ではほぼ常に typeof fn で得られた型です

戻り値:タプル型です。T の各パラメータ(オプショナルパラメータと rest パラメータを含む)に順に対応します。T が関数型でなければ never になります。

▶ サンプル

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

出力:

session(u-7, 3600s, default)
retry -> session(u-7, 60s, admin)

(トランスパイル後の実行出力。型レベルでは SessionArgs は [string, number, string?] です。createSession のシグネチャを変えれば、タプルも自動的に追従します)

💡 ポイント

ℹ️ 説明 実装も同様に infer に基づき、パラメータのリストをタプル P として捕まえます。オプショナルパラメータはタプルの中では string? として現れ、rest パラメータは ...string[] として現れます。
⚠️ 注意 ReturnType と同様に、オーバーロードされた関数では最後のオーバーロードのパラメータのリストだけが取られます。
💡 ヒント 同族のツールには、コンストラクタのパラメータを取る ConstructorParameters<T>、クラスのインスタンス型を取る InstanceType<T>、this の型を取る ThisParameterType<T> があります。サードパーティの API をラップするとき、この一式が非常に役立ちます。
ケースは今後追加予定です。

📚 関連チュートリアル

❓ よくある質問

Q Parameters で取ったタプルをそのまま展開して呼び出せますか?
A できます。これこそ代表的な使い方です。createSession(...args) のように。TS はタプルに基づいて位置、個数、型をすべてチェックし、多くても少なくてもエラーになります。
Q Parameters の結果にパラメータを追加するには?
A タプルは連結できます。type Logged<P extends any[]> = [...P, requestId: string] のように。Parameters と組み合わせれば「元の引数+追加項目」の新しい関数シグネチャが作れ、デコレータやミドルウェアで定番の技です。
Q Parameters<typeof Class> は使えますか?
A クラス自体がコンストラクタであり、typeof Class の型にはコンストラクトシグネチャが付いています。コンストラクタの引数を取りたいなら専用の ConstructorParameters<typeof Class> を使うべきで、普通の Parameters は never を返します(通常の呼び出しシグネチャに合致しないため)。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%