TypeScriptのタプルとは
TypeScriptにおけるタプルとは配列と同じようなものです。
しかし、以下のような点で配列とは異なる特徴を持ちます。
- 要素数は固定である
- 各要素の型は定められている
- 全ての要素の型が同じである必要はない
例えば、タプルを使って文字列と数値のペアを表現すると以下のように書けます。
let person: [string, number];
person = ['田中', 30];
タプル内では要素の順序(位置)は重要となります。
もし、personタプルの値の順番を逆にして[30, “田中”]に変更すると、エラーが発生します。
let person: [string, number];
person = [30, '田中']; // error: Type 'string' is not assignable to type 'number'.
このため、タプルは特定の順序で互いに関連するデータを持つ場合に使用されます。
オプションのタプル要素
TypeScript3.0以降、タプルはクエスチョンマーク(?)の接頭辞を使うことで、オプションの要素を指定することができるようになりました。
例えば、以下のように[名前, 年齢, 性別]をそれぞれ格納するタプルを用意し、性別をオプションの要素とします。
let person1, person2: [string, number, string?];
person1 = ['田中', 30, '男性'];
person2 = ['加藤', 25];
上記のように、タプルに3番目の要素(ここでは性別)は、?を付けたオプションの要素なので、あっても無くても問題なく動作します。