typealias позволяет определить альтернативное имя для существующего типа. Это не создаёт новый тип — это просто синоним времени компиляции, который компилятор разрешает в исходный тип.
typealias UserMap = Map<String, List<User>>
typealias Predicate<T> = (T) -> Boolean
typealias UserId = String)UserId и String рассматриваются компилятором как идентичныеЕсли твоя цель — типобезопасность — предотвратить случайную передачу UserId туда, где ожидается ProductId — лучше используй inline value classes:
@JvmInline
value class UserId(val value: String)
typealias создает новый отдельный тип во время выполнения, который отличается от его базового типа, позволяя компилятору перехватывать несоответствия типов между aliased и исходными типами.
Новый — ещё не проверен сообществом
Вы