Madea-K Dev

プログラムのメモや日々思ったことなど

< 35歳迄に起業し1000万円以上稼ぐ >

タプル型と可変長引数

タプルとは複数の構成要素からなる組を総称する一般概念。
タプルの概念そのものも組と呼ばれる場合がある。(https://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%97%E3%83%AB)

タプル型は[string, number]のように書きます。
これは実際のところ、長さが2の配列で、0番目に文字列が、1番目に数値が入ったようなものを表しています。

ただし、タプル型の利用は注意する必要があります。TypeScriptがタプルと呼んでいるものはあくまで配列ですから、配列のメソッドで操作できます。

このコードはTypeScriptでエラー無くコンパイルできますが、実際に実行すると変数numに入るのは数値ではなく文字列です。
このあたりはTypeScriptの型システムの限界なので、タプル型を使用するときは注意するか、あるいはそもそもこのようにタプル型を使うのは避けたほうがよいかもしれません。

ちなみに、0(ゼロ)要素のタプル型なども作ることができます。
const unit: [] = [];

また、TypeScriptのタプル型は、可変長のタプル型の宣言が可能です。

さらに、オプショナルな要素を持つタプル型もあります。これは、[string, number?]のように型に?が付いた要素を持つタプル型です。この場合、2番目の要素はあってもいいし無くてもいいという意味になります。ある場合はnumber型でなければなりません。

オプショナルな要素は複数あっても構いませんが、そうでない要素より後に来なければいけません。例えば[string?, number]のような型はだめです。

実は、最近(TypeScript 3.0)になってタプル型の面白い使い道が追加されました。それは、タプル型を関数の可変長引数の型を表すのに使えるというものです。

参照元 : https://qiita.com/uhyo/items/e2fdef2d3236b9bfe74a#%E3%82%BF%E3%83%97%E3%83%AB%E5%9E%8B

/ TypeScript

×