【たぷる】
タプル とは?
💡 中身の数と種類が決まった「お弁当の仕切り」
📌 このページのポイント
- TypeScriptでは [string, number] のように各位置の型を指定して定義する
- 配列と似ているが、要素数と各要素の型が固定されている点が異なる
- 関数から複数の値を返したいとき、オブジェクトの代わりに使えて手軽
- Reactの useState が返す [state, setState] はタプルの代表的な活用例
配列とタプルって何が違うの?
配列は同じ型の要素を可変長で持つのが基本。タプルは「1番目は文字列、2番目は数値」のように各位置の型と要素数が決まっている。TypeScriptでは型チェックで間違った位置に間違った型を入れるとエラーになる。
どういうときにタプルを使うの?
JavaScriptにはタプルの構文はないの?
JavaScriptには配列しかなく、タプルという専用構文はない。TypeScriptの型システムで配列に「位置ごとの型と長さ」の制約をつけたものがタプル。実行時はただの配列として動いている。
Pythonのタプルはイミュータブルだけど、TypeScriptのタプルは変更できるの?
TypeScriptのタプルは実行時にはただの配列だから、push()で要素を追加したりできちゃうんだ。型チェックはコンパイル時だけだから、実行時の安全性は保証されない。「as const」を使ってリードオンリータプルにすることもできるよ。Pythonのタプルは言語レベルで変更不可(イミュータブル)だから、辞書のキーに使えるという利点がある。
分割代入ってタプルと関係あるの?
まとめ:ざっくりこれだけ覚えればOK!
タプルって出てきたら「各位置の型が決まっている固定長の配列」と思えばだいたいOK!
📖 おまけ:英語の意味
「tuple」 = 組
💬 数学の「n-tuple(n個の組)」が語源で、double, triple, quadruple の -ple/-tuple から