Search

Type aliases

타입 별칭은 기존 타입에 대한 대체 이름을 제공한다.
타입 이름이 너무 길면 더 짧은 이름을 만들어서 새로운 이름을 대신 사용할 수 있다.
이 기능은 특히 제네릭 타입이 길어질 때 유용하다.
typealias NodeSet = Set<Network.Node> typealias FileTable<K> = MutableMap<K, MutableList<File>>
Kotlin
복사

함수 타입을 위한 타입 별칭

타입 별칭은 함수 타입에도 사용할 수 있다.
typealias MyHandler = (Int, String, Any) -> Unit typealias Predicate<T> = (T) -> Boolean
Kotlin
복사

내부 클래스에 대한 타입 별칭

내부 클래스와 중첩 클래스에도 새로운 이름을 제공할 수 있다.
class A { inner class Inner } class B { inner class Inner } typealias AInner = A.Inner typealias BInner = B.Inner
Kotlin
복사

타입 별칭은 새로운 타입인가?

타입 별칭은 새로운 타입을 만드는 것이 아니라 단순히 기존 타입에 대한 다른 이름을 제공하는 것이다.
즉, 타입 별칭을 사용하더라도 컴파일러는 이를 본래의 타입으로 확장하여 처리한다.
typealias Predicate<T> = (T) -> Boolean fun foo(p: Predicate<Int>) = p(42) fun main() { val f: (Int) -> Boolean = { it > 0 } println(foo(f)) // prints "true" val p: Predicate<Int> = { it > 0 } println(listOf(1, -2).filter(p)) // prints "[1]" }
Kotlin
복사
Predicate<Int>는 실제로 (Int) → Boolean 타입으로 확장되므로 동일하게 동작한다.
fun foo(p: Predicate<Int>) 는 Predicate<Int> 나 (Int) → Boolean 타입을 모두 받을 수 있다.