Za dokumentacją:
Type aliases provide alternative names for existing types. If the type name is too long you can introduce a different shorter name and use the new one instead. It's useful to shorten long generic types
Użycie aliasów zwiększa czytelność, zobacz podane tam przykłady:
typealias NodeSet = Set<Network.Node>
typealias FileTable<K> = MutableMap<K, MutableList<File>>
typealias MyHandler = (Int, String, Any) -> Unit
typealias Predicate<T> = (T) -> Boolean
Przykład, który podałeś jest nietrafiony - w tym przypadku użyłbym data class
lub inline class
, aby mieć ochronę typów. Natomiast odnośnie:
Jako wady słyszałem, że ludziom szybciej jest kiedy wiedzą jak stworzyć to co mają przekazać, niż szukać definicji czym dokładnie to jest.
To już kwestia przyzwyczajenia, ale efektywniej się pracuje, gdy nie musisz zaglądać w szczegóły implementacyjne klasy, której używasz (zaglądasz w bebechy ConcurrentHashMapy?). Oczywiście nie jest to łatwe do osiągnięcia, kwestia dotarcia się w zespole.