Псевдонимы типов
Давайте имена сложным типам
«Псевдонимы типов» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Что такое псевдоним типа
Псевдоним типа даёт существующему типу новое имя. Он не создаёт новый тип — это лишь средство повышения читаемости, обрабатываемое во время компиляции.
Псевдоним объявляется с помощью ключевого слова typealias.
typealias Name = String
fun main() {
val n: Name = "Alice"
println(n)
}Именование функциональных типов
Функциональные типы могут быть громоздкими. Псевдоним значительно упрощает чтение сигнатур.
typealias Handler = (String) -> Unit
fun register(h: Handler) {
h("event fired")
}
fun main() {
register { msg -> println(msg) }
}Именование обобщённых типов
Сложные вложенные обобщённые типы, например Map<String, List<Int>>, легче читать, если использовать псевдоним.
typealias ScoreBoard = Map<String, List<Int>>
fun main() {
val board: ScoreBoard = mapOf("team1" to listOf(10, 20))
println(board)
}Псевдонимы прозрачны
Поскольку псевдоним обозначает тот же тип, значения полностью взаимозаменяемы. Name и String можно свободно смешивать без преобразования.
typealias Name = String
fun shout(s: String) = s.uppercase()
fun main() {
val n: Name = "bob"
println(shout(n))
}Параметризованные псевдонимы
У псевдонима типа могут быть собственные параметры типа, которые передаются базовому типу.
typealias Pairs<T> = List<Pair<T, T>>
fun main() {
val data: Pairs<Int> = listOf(1 to 2, 3 to 4)
println(data)
}Псевдонимы вложенных классов
Длинный путь к вложенному или внутреннему классу можно заменить коротким псевдонимом, уменьшив количество импортов и лишний текст.
class Outer {
class Inner {
fun hello() = "inner hello"
}
}
typealias Shortcut = Outer.Inner
fun main() {
println(Shortcut().hello())
}Повышение понятности предметной области
Псевдонимы передают намерение. typealias UserId = Int показывает, что целое число представляет идентификатор пользователя, хотя компилятор по-прежнему рассматривает его как Int.
typealias UserId = Int
typealias Email = String
fun notify(id: UserId, to: Email) {
println("Notify user " + id + " at " + to)
}
fun main() {
notify(42, "a@b.com")
}Без дополнительной типобезопасности
Помните: поскольку псевдонимы прозрачны, компилятор не помешает Вам передать UserId туда, где ожидается другой псевдоним Int. Это документация, а не средство контроля.
typealias UserId = Int
typealias OrderId = Int
fun process(order: OrderId) = println("order " + order)
fun main() {
val user: UserId = 5
process(user) // compiles fine — both are Int
}Только на верхнем уровне
Псевдонимы типов должны объявляться на верхнем уровне файла. Нельзя определять их внутри функций или классов. Размещайте их рядом со связанным кодом или в отдельном файле.
typealias Callback = () -> Unit
fun run(cb: Callback) = cb()
fun main() {
run { println("done") }
}Когда использовать псевдонимы
Используйте псевдонимы типов, когда:
- Функциональный тип или обобщённый тип длинный и повторяется
- Вам нужны понятные имена для примитивных типов
- Вам нужно короткое обозначение вложенного типа
Когда требуется настоящая типобезопасность, вместо этого используйте класс-значение.
Псевдоним или класс-значение
Псевдоним — это тот же тип с новым именем, без какой-либо защиты. Класс-значение — отдельный тип, который не позволяет смешивать значения. В следующем уроке рассматриваются классы-значения.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли псевдонимы типов.
Итоги
Вы изучили псевдонимы типов:
- Объявляются с помощью
typealiasна верхнем уровне - Являются лишь новым именем и полностью прозрачны
- Удобны для функциональных типов, обобщённых типов и повышения читаемости
- Не добавляют типобезопасности
Далее: встраиваемые классы-значения для обёртки без дополнительных затрат.
Часто задаваемые вопросы
Урок «Псевдонимы типов» бесплатный?
Да — полный текст урока «Псевдонимы типов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Псевдонимы типов»?
Давайте имена сложным типам Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Псевдонимы типов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Псевдонимы типов
- Встраиваемые классы-значения
- Варианты использования
- Ограничения