Kotlin 1.1 has introduced a new feature for referring to verbose types called type aliases. As the name suggests, a type alias allows us to declare a new type that is simply an alias of an existing type. We do this using the typealias keyword:
typealias Cache = HashMap<String, Boolean>
They are especially useful as a replacement for complex type signatures. Compare the following and see which you think is more readable:
fun process(exchange: Exchange<HttpRequest, HttpResponse>): Exchange<HttpRequest, HttpResponse>
Or do you think this is more readable?:
typealias HttpExchange = Exchange<HttpRequest, HttpResponse> fun process2(exchange: HttpExchange): HttpExchange
A typealias keyword carries no runtime overhead or benefit. The alias is simply replaced by the compiler. This means that new types are not created or allocated...