typealias даёт короткое имя существующему типу без создания нового runtime-типа.
Разбор
typealias UserId = Long улучшает читаемость домена.
- Не обеспечивает type safety (это всё ещё Long).
- Удобно для длинных function types.
- Для настоящей защиты — inline value class (
@JvmInline).
Итог
typealias — только алиас; для safety нужен value class.