English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift タイプ別名(Typealias)

この記事では、Swiftのタイプ別名とその用例について学びます。

タイプ別名は、プログラム中の既存のデータタイプ新しい名前を提供します。タイプ別名を宣言した後、プログラム全体でその別名を使って既存のタイプを置き換えることができます。

タイプ別名は新しいタイプを作成しません。それは単に既存のタイプに新しい名前を提供するだけです。

typealiasの主な目的は、コードをより可読にし、上下文中でより明確で理解しやすいようにすることです。

どうやってタイプ別名を作成しますか?

typealiasキーワードを使って以下のように宣言されます:

typealias name = existing type

Swiftでは、ほとんどのタイプがtypealiasを使用できます。それらは以下のとおりです:

  • 組み込みタイプ(例:String, Int)

  • ユーザー定義のタイプ(例:クラス、構造体、エnum)

  • 複雑なタイプ(例:クロージャー)

組み込みタイプのTypealias

typealiasを使って、String、Int、Floatなどのすべての組み込みデータタイプを使用できます。

例えば:

typealias StudentName = String

上記の宣言は以下のことを許可します:学生名Stringの代わりに各所で使用します。したがって、文字列の型定数を作成したいが、学生の名前のように見えたい場合、以下のようにすることができます:

let name:StudentName = "Jack"

typealiasを使わない場合、Stringの型定数は以下のように宣言されます:

let name:String = "Jack"

上記の2つの例では、Stringの型定数を作成していますが、typealiasを使って宣言することで、コードの可読性が向上します。

ユーザー定義タイプのタイプ別名

多くの場合、独自のデータタイプを作成する必要があります。例えば、Studentを表すタイプを作成したい場合、以下のクラスを使って作成できます:

class Student {
}

今や、学生グループは配列で表現できます:

var students:Array<Student> = []

typealiasを使ってArray<Student>を作成することで、上記の宣言をより可読にすることができます:

typealias Students = Array<Student>

今や、コードの可読性を向上させることができます:

var students:Students = []

複雑なタイプのTypealias

もう一つの例を分析しましょう。例えば、閉包を引数として受け取るメソッドがあると仮定します。

閉包についてご不明の場合は心配しないでください。ただ、特別な関数として考えれば良いだけです。

> (String)){-func someMethod(oncomp: (Int
}

> (String)

上記の例では、閉包が someMethod の引数として使用されています。この閉包は Int 値を受け取り、String を返します。-> (String) の使用は開発者にとって何の意味もありません。typealias を使用して新しい名前を提供できます:

typealias CompletionHandler = (Int)-> (String)

今では、以下のようにメソッドを再定義できます:

func someMethod(oncomp: CompletionHandler){
}

typealias を使用すると、同じコードがより明確でプログラマーフレンドリーに見えます。