型エイリアス
複雑な型に名前を付けます
「型エイリアス」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
型エイリアスとは
型エイリアスは、既存の型に新しい名前を付けるものです。新しい型は導入せず、コンパイル時に解決される可読性のための仕組みです。
typealiasキーワードで宣言します。
typealias Name = String
fun main() {
val n: Name = "Alice"
println(n)
}関数型に名前を付ける
関数型は冗長になることがあります。エイリアスを使うと、シグネチャがはるかに読みやすくなります。
typealias Handler = (String) -> Unit
fun register(h: Handler) {
h("event fired")
}
fun main() {
register { msg -> println(msg) }
}ジェネリック型に名前を付ける
Map<String, List<Int>>のように深くネストしたジェネリック型も、エイリアスを使うと読みやすくなります。
typealias ScoreBoard = Map<String, List<Int>>
fun main() {
val board: ScoreBoard = mapOf("team1" to listOf(10, 20))
println(board)
}エイリアスは透過的
エイリアスは同じ型であるため、値を完全に相互利用できます。NameとStringは変換なしで自由に混在させられます。
typealias Name = String
fun shout(s: String) = s.uppercase()
fun main() {
val n: Name = "bob"
println(shout(n))
}型パラメーター付きエイリアス
型エイリアスには独自の型パラメーターを設定し、それを基になる型に渡すことができます。
typealias Pairs<T> = List<Pair<T, T>>
fun main() {
val data: Pairs<Int> = listOf(1 to 2, 3 to 4)
println(data)
}ネストしたクラスのエイリアス
長いネストクラスや内部クラスのパスに短いエイリアスを付けると、importの記述量とコードの煩雑さを減らせます。
class Outer {
class Inner {
fun hello() = "inner hello"
}
}
typealias Shortcut = Outer.Inner
fun main() {
println(Shortcut().hello())
}ドメインの可読性を高める
エイリアスは意図を伝えます。typealias UserId = Intと書けば、コンパイラー上はIntとして扱われるままでも、その整数がユーザー識別子を表すことを示せます。
typealias UserId = Int
typealias Email = String
fun notify(id: UserId, to: Email) {
println("Notify user " + id + " at " + to)
}
fun main() {
notify(42, "a@b.com")
}型安全性は追加されない
注意してください。エイリアスは透過的なので、コンパイラーは、別のIntエイリアスが必要な場所にUserIdを渡しても阻止しません。エイリアスはドキュメントであり、強制力ではありません。
typealias UserId = Int
typealias OrderId = Int
fun process(order: OrderId) = println("order " + order)
fun main() {
val user: UserId = 5
process(user) // compiles fine — both are Int
}トップレベルのみ
型エイリアスはファイルのトップレベルで宣言する必要があります。関数やクラスの内部には定義できません。関連するコードの近くか、専用ファイルに配置してください。
typealias Callback = () -> Unit
fun run(cb: Callback) = cb()
fun main() {
run { println("done") }
}エイリアスを使う場面
次のような場合は型エイリアスを検討してください。
- 関数型やジェネリック型が長く、繰り返し使われる
- プリミティブ型に自己説明的な名前を付けたい
- ネストした型に短い名前を付けたい
本当の型安全性が必要な場合は、代わりに値クラスを使ってください。
エイリアスと値クラス
エイリアスは新しい名前を付けただけの同じ型であり、型安全性はありません。値クラスは独立した型であり、異なる値を混在させるのを防ぎます。次のレッスンでは値クラスを扱います。
クイックチェック
型エイリアスについて理解度を確認しましょう。
振り返り
型エイリアスについて学びました。
- トップレベルで
typealiasを使って宣言する - 新しい名前にすぎず、完全に透過的である
- 関数型、ジェネリック型、可読性の向上に役立つ
- 型安全性は追加されない
次は、オーバーヘッドなしでラッピングできるインライン値クラスを扱います。
よくある質問
「型エイリアス」レッスンは無料ですか?
はい。「型エイリアス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「型エイリアス」で何を学びますか?
複雑な型に名前を付けます ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「型エイリアス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。