[Swift] typealiasって?


はじめに

typealiasという文字をを見たときなんか、ふわっとエイリアンの顔が頭に浮かんだのは僕だけでしょうか。多分仲間がいると思っています。
typealiasは今までにも見たことはあったのですが、どういう場面で使えるのか分かっていなかったので調べてみました。この記事では使い方の一部をご紹介します。

ざっくり理解するtypealias

typealiasはざっくり、IntやStringなどの型に自分用の名前をつけて使えるよー。というものです。
例えばInt型の数値を扱うときにIntっていう型の名前はちょっとダサいな。と思ったとしましょう。
そこでtypealiasの出番です。これを使うとIntの性能を持ったあなた好みの名前の型を作れます。
以下に例を示します。

typealias Explosion = Int // これでIntの性能を持ったExplosionという型が作れました!

// ExplosioinはIntと同じ特徴なので当然整数を代入することができます。
let num1: Explosion = 3
let num2: Explosion = 5

print(num1 + num2) 
// 実行結果: 8
// 計算も問題なく行えます

let num3: Explosion = 3
let num4: Int = 5

print(num3 + num4)
// 実行結果: 8
// ExplosionはIntと同じ特徴を持っているのでIntとの足し算も問題なくできます

他にもたくさん使い方がありますが、この記事ではこれくらいにしておきます。
もっと知りたい方は以下の記事に詳しく書かれています。
https://qiita.com/shimesaba/items/4d19a7e4c67caca73603

使用例

型の名前を変えられるということは分かったと思いますが、これをどのように使うと便利なのかの例を以下に示したいと思います。
あなたは整数のみの掛け算ができるシステムを以下のように作ったとします。
※Intは今回わかりやすくするためにわざとつけています。

let num1: Int = 4
let num2: Int = 6

print(num1 * num2)
実行結果: 24

その後、あなたは今まで整数のみの掛け算だったところを、小数も扱えるようにしたいと考えました。
そして、以下のようにコードをなおしました。

let num1: Double = 4.2
let num2: Double = 6.1

print(num1 * num2)
実行結果: 25.62

今回はIntをDoubleに変えるところが2カ所だけでしたが、もし修正しなきゃいけない箇所がもっとたくさんあったら、修正作業はかなり面倒ですよね。ここでtypealiasが登場します。以下のコードをご覧ください。

typealias NumType = Int

let num1: NumType = 4
let num2: NumType = 6

print(num1 * num2)
実行結果: 24

このようにtypealiasを使うことでNumTypeはIntの特徴を持っているのでnum1、num2はInt型のように使用できます。
そして、この後に小数も扱えるようにしたい!と思ったときには以下のようにします。

typealias NumType = Double // ←ここだけ変えればいい!

let num1: NumType = 4.2
let num2: NumType = 6.1

print(num1 * num2)
実行結果: 25.62

typealiasを使うことで修正箇所は1カ所だけでよくなります!
このように、後から型の変更をするかもしれないものを初めからtypealiasを用いて宣言しておくことで、後の修正で楽になることがあります。

おわりに

少しでも参考になれば嬉しく思います。ではでは。