タプルを使って複雑な値のセットを用意する場合、1つ1つの値がどういう役割をはたすものかがわかりにくくなりがちです。例えば先ほどの、
let data : [string, string, number];
この値を見てみましょう。これは名前、メールアドレス、年齢をセットにして扱うためのものでしたね。けれど、上の文を見ただけでは、1つ目の値が名前を保管するものだなんてわかりません。また1つ目も2つ目も同じstringですから、どっちが名前でどっちがメールアドレスなのか、わからなくなったり間違えたりしそうです。
こんな場合、タイプの
エイリアスを作成することで、よりわかりやすいタプルを作れます。エイリアスとは、要するに「別名」です。タイプに別の名前を用意することで、値の役割などがよりわかりやすくなるのです。エイリアスは、こんな具合に作成します。
type 名前 = タイプ;
これで、新しい名前のエイリアスが作られます。エイリアスは、元のタイプと同じように扱うことができます。このエイリアスを使って、先ほどのサンプルをもう少しわかりやすくしてみましょう。
type Name = string;
type Mail = string;
type Age = number;
let data : [Name, Mail, Age];
data = ['taro', 'taro@yamada', 35];
こんな感じになりました。ここでは、
Name、Mail、Ageというエイリアスを作成してあります。そしてこれらを使って、タプルを
[Name, Mail, Age]というような形で定義してあります。これなら、1つ1つの値がどういう内容なのか一目瞭然ですね。
エイリアスは、タイプ名の別名ですから、それ自体には何かの役割が付加されるわけではありません。例えば、上のサンプルで
[Mail, Name, Age]と書いても、
[Name, Name, Age]と書いても、働きは同じです。Mailが、「メールアドレスの値しか受け付けない」というわけではないのです。あくまで、別名を付けて「わかりやすくする」だけのものです。
が、値の役割を明確にし、コードをわかりやすくするという点においては絶大な威力を発揮するでしょう。タプルに限らず、さまざまなところで使える機能ですので、ぜひ覚えておきましょう。