Type alias
Kotlin 1.1 has introduced a new feature for referring to verbose types called type aliases. As the name suggests, a type alias allow 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:
typealias HttpExchange = Exchange<HttpRequest, HttpResponse> fun process2(exchange: HttpExchange): HttpExchange
A typealias
carries no runtime overhead or benefit. The alias is simply replaced by the compiler. This means that new types are not created or allocated, so we suffer no performance penalty. It also means that two aliases that have the same right-hand side, can be used interchangeably. For example, these...