アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

TypeScriptのタプルと配列の違いとは?

Featured image of the post

TypeScriptには、配列(Array)タプル(Tuple)という2つのデータ構造があります。一見似ていますが、使い方や特性が異なります。本記事では、それぞれの違いや活用方法について詳しく解説します。


[目次を開く]

1. 配列(Array)とは?

  • 配列(Array)は、同じ型のデータを順番に格納できるリスト型のデータ構造です。TypeScriptでは、次のように記述します。
配列の基本的な型定義
let numbers: number[] = [1, 2, 3, 4, 5];
let strings: string[] = ["apple", "banana", "cherry"];

または、Array<T>を使った記述も可能です。

let numbers: Array<number> = [1, 2, 3, 4, 5];
let strings: Array<string> = ["apple", "banana", "cherry"];
配列の特徴
  • 要素数が可変(増減可能)
  • 全ての要素が同じ型number[]ならすべてnumber型)
  • 要素の追加・削除が容易push()pop()などが使用可能)
配列の操作例
let fruits: string[] = ["apple", "banana"];
fruits.push("cherry"); // ["apple", "banana", "cherry"]
fruits.pop(); // ["apple", "banana"]

2. タプル(Tuple)とは?

  • タプル(Tuple)は、異なる型の値を順番に格納できるデータ構造です。配列とは異なり、事前に要素の型と順番を決めておく必要があります。
タプルの基本的な型定義
let user: [string, number] = ["Alice", 25];

この場合、

  • 1つ目の要素は string
  • 2つ目の要素は number

と決まっています。型が一致しない場合はエラーになります。

let invalidUser: [string, number] = [25, "Alice"]; // エラー!
タプルの特徴
  • 異なる型を持つ要素を格納できる
  • 要素の順番が固定(定義した順番でなければならない)
  • 要素数が固定されることが多い(可変長タプルもあるが制約あり)
タプルの活用例

タプルは、関数の戻り値などで役立ちます。

function getUser(): [string, number] {
  return ["Alice", 25];
}

let user = getUser();
console.log(user[0]); // "Alice"
console.log(user[1]); // 25

また、タプルを使うことで、オブジェクトを使わずに簡潔にデータを管理できます。


3. 配列とタプルの違い

特徴 配列(Array) タプル(Tuple)
要素の型 同じ型 異なる型が可能
要素数 可変 基本的に固定
要素の順番 関係なし 型と順番が固定
主な用途 一般的なリスト 特定のフォーマットのデータ
具体的な違いの例
// 配列
let arr: number[] = [1, 2, 3];
arr.push(4); // OK
arr[0] = 10; // OK

// タプル
let tuple: [string, number] = ["Alice", 25];
tuple[0] = "Bob"; // OK(同じ型なので)
tuple[1] = 30; // OK
tuple.push(40); // TypeScriptの制約を超えてしまうがエラーにならない場合あり

4. タプルと配列の使い分け

配列を使うべきケース
  • 同じ型のデータをリストとして管理したい場合
  • 要素の追加・削除を柔軟に行いたい場合
let numbers: number[] = [10, 20, 30]; // OK
numbers.push(40); // OK
タプルを使うべきケース
  • 型の異なるデータを一つのまとまりとして管理したい場合
  • データの順序を明確に固定したい場合
let person: [string, number] = ["Alice", 25]; // OK

特に関数の戻り値で、複数の異なる型のデータを返すときに便利です。


5. タプルの応用:可変長タプル

TypeScript 4.0以降では、可変長タプルがサポートされています。

let log: [string, ...number[]] = ["event", 1, 2, 3, 4];

この場合、最初の要素はstring型で固定され、それ以降の要素はnumber型の可変配列になります。


まとめ

TypeScriptの配列とタプルの違い
配列(Array) タプル(Tuple)
同じ型の要素を格納 異なる型の要素を格納可能
要素数が可変 要素数が固定(可変長タプルを除く)
要素の順番に制約なし 要素の順番が決まっている

タプルは型の異なるデータを順番通りに格納したい場合に便利です。一方で、配列は同じ型のデータを柔軟に扱いたいときに適しています

場面に応じて使い分けることで、より安全で型の厳密なコードを記述できます。ぜひ、適切に活用してみてください!

あなたを爆速で成長させるメンタリングプログラムはこちらから↓↓

RUNTEQ(ランテック) - 実践型Webエンジニア養成プログラミングスクールの入会