Я часто использую typealiases в своем коде Kotlin, но мне интересно, смогу ли я обеспечить безопасность типов для них.
typealias Latitude = Double
typealias Longitude = Double
fun someFun(lat: Latitude, lon: Longitude) {...}
val lat: Latitude = 12.34
val lon: Longitude = 56.78
someFun(lon, lat) // parameters are in a wrong order, but the code compiles fine
Было бы хорошо, если бы я мог как-то предотвратить неявное приведение между typealiases, помогаячтобы избежать таких проблем.
Конечно, существует проблема, заключающаяся в том, что операции над базовыми типами будут недоступны для typealiases, но это может быть решено с помощью функций расширения (или приведения).
Я не хочу использовать классы данных, содержащие одно поле, потому что это кажется немного излишним, особенно для примитивных типов (или, возможно, я ошибаюсь, и они будут оптимизированы?)
Итак, вопрос: могу ли я каким-то образом обеспечить безопасность типов для typealiases?