[T, U] タプル型
最終更新:2026-10-22
[T, U] タプル型
タプルは「長さが固定で、位置ごとに型が異なる」配列型です。座標、キーと値のペア、関数の複数戻り値など、位置そのものに意味があるデータに適しています。
| グループ | 基本型 |
|---|---|
| 種類 | 型 |
| strict モード | 不要 |
ℹ️ 説明 エディタは TypeScript を JavaScript にトランスパイルして実行します(型チェックなし)。型チェック結果は各サンプルの出力を参照してください。
📝 構文
type Point = [number, number];
type Named = [name: string, age: number]; // ラベル付きタプル
let pair: Point = [3, 4];
⚙️ パラメータ
| [T, U] | 位置ごとに型を宣言します。第 0 位が T、第 1 位が U で、長さも固定です |
|---|---|
| [lat: number] | [lat: number, lng: number] のように位置に名前を付けます。可読性に影響するだけです |
戻り値:戻り値はありません。タプルは純粋な型レベルの概念で、実行時には普通の配列です。
▶ サンプル
下のコードを編集して「試す」を押すと、トランスパイル実行結果を確認できます:
出力:
rgb(255, 0, 0)
(トランスパイル後の実行出力。red.push("x") も red = [255, 0] もどちらもコンパイルエラーになります)
💡 ポイント
ℹ️ 説明 タプルは実行時には普通の配列であり、長さの制約はコンパイル時にのみ存在します。
💡 ヒント 具名タプル [lat: number, lng: number] は分割代入や IDE の補完がより意味のあるものになります。複数戻り値の場面で強くおすすめです。
⚠️ 注意 push は宣言済みの型の要素ならタプルに追加できてしまい(長さを超えられます)、[number, number].push(1) はエラーになりません。位置の意味は規律で守るしかありません。
🏷️ 関連基本型
💡 関連ケース
ケースは今後追加予定です。
📚 関連チュートリアル
❓ よくある質問
Q タプルと配列の違いは何ですか?
A 配列は長さが可変で要素は同型、タプルは長さが固定で位置ごとに型が異なります。「各位置の意味が異なる」データ([経度, 緯度] など)にはタプルを、コレクション系のデータには配列を使います。
Q タプルにオプション要素は持たせられますか?
A はい。[string, number?] は第 2 位が存在しない場合があることを表し、オプション要素は必ず末尾に置かなければなりません。
Q タプルとレストパラメータにはどんな関係がありますか?
A レストパラメータは本質的にタプルです。function f(...args: [string, number]) は、呼び出し時にまず string を渡し、次に number を渡すことを正確に規定します。