0Pricing
Kotlin Academy · Lekcja

Aliasy typów

Nazywaj złożone typy

Aliasy typów to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Czym jest alias typu

Alias typu nadaje istniejącemu typowi nową nazwę. Nie wprowadza nowego typu — jest wyłącznie narzędziem poprawiającym czytelność, rozwiązywanym podczas kompilacji.

Alias deklaruje się za pomocą słowa kluczowego typealias.

typealias Name = String

fun main() {
    val n: Name = "Alice"
    println(n)
}

Nazywanie typów funkcji

Typy funkcji mogą być rozwlekłe. Alias znacznie ułatwia odczytywanie sygnatur.

typealias Handler = (String) -> Unit

fun register(h: Handler) {
    h("event fired")
}

fun main() {
    register { msg -> println(msg) }
}

Nazywanie typów generycznych

Głęboko zagnieżdżone typy generyczne, takie jak Map<String, List<Int>>, są czytelniejsze po nadaniu im aliasu.

typealias ScoreBoard = Map<String, List<Int>>

fun main() {
    val board: ScoreBoard = mapOf("team1" to listOf(10, 20))
    println(board)
}

Aliasy są przezroczyste

Ponieważ alias oznacza ten sam typ, wartości są w pełni wymienne. Name i String można dowolnie mieszać bez konwersji.

typealias Name = String

fun shout(s: String) = s.uppercase()

fun main() {
    val n: Name = "bob"
    println(shout(n))
}

Aliasy sparametryzowane

Alias typu może mieć własne parametry typów i przekazywać je do typu bazowego.

typealias Pairs<T> = List<Pair<T, T>>

fun main() {
    val data: Pairs<Int> = listOf(1 to 2, 3 to 4)
    println(data)
}

Aliasy klas zagnieżdżonych

Długa ścieżka do klasy zagnieżdżonej lub wewnętrznej może otrzymać krótki alias, co ogranicza nadmiar importów i zbędny tekst.

class Outer {
    class Inner {
        fun hello() = "inner hello"
    }
}

typealias Shortcut = Outer.Inner

fun main() {
    println(Shortcut().hello())
}

Poprawianie czytelności domeny

Aliasy komunikują intencję. typealias UserId = Int dokumentuje, że liczba całkowita reprezentuje tożsamość użytkownika, mimo że kompilator nadal traktuje ją jako 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")
}

Brak dodatkowego bezpieczeństwa typów

Należy pamiętać, że ponieważ aliasy są przezroczyste, kompilator nie powstrzyma Państwa przed przekazaniem wartości typu UserId w miejscu, w którym oczekiwany jest inny alias typu Int. Aliasy służą do dokumentowania, a nie do wymuszania ograniczeń.

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
}

Tylko na poziomie głównym

Aliasy typów muszą być deklarowane na poziomie głównym pliku. Nie można definiować ich wewnątrz funkcji ani klas. Należy umieszczać je w pobliżu powiązanego kodu lub w osobnym pliku.

typealias Callback = () -> Unit

fun run(cb: Callback) = cb()

fun main() {
    run { println("done") }
}

Kiedy używać aliasów

Warto używać aliasów typów, gdy:

  • Typ funkcji lub typ generyczny jest długi i powtarza się w kodzie
  • Potrzebne są samodokumentujące się nazwy dla typów prostych
  • Potrzebna jest krótka nazwa zagnieżdżonego typu

Gdy potrzebne jest rzeczywiste bezpieczeństwo typów, należy użyć klasy wartości.

Alias a klasa wartości

Alias oznacza ten sam typ pod nową nazwą — nie zapewnia żadnego bezpieczeństwa. Klasa wartości jest odrębnym typem, który uniemożliwia mieszanie wartości. Klasy wartości zostaną omówione w następnej lekcji.

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat aliasów typów.

Podsumowanie

Nauczyli się Państwo używać aliasów typów:

  • Deklarowanych za pomocą typealias na poziomie głównym
  • Będących tylko nową nazwą, w pełni przezroczystą dla kompilatora
  • Przydatnych dla typów funkcji, typów generycznych i poprawy czytelności
  • Niezapewniających dodatkowego bezpieczeństwa typów

W następnej części: wbudowane klasy wartości zapewniające opakowanie bez dodatkowego narzutu.

Często zadawane pytania

Czy lekcja „Aliasy typów” jest bezpłatna?

Tak — pełny tekst „Aliasy typów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Aliasy typów”?

Nazywaj złożone typy Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?

Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Aliasy typów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?

Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Aliasy typów
  2. Klasу wartości inline
  3. Przypadki użycia
  4. Ograniczenia
← Powrót do Kotlin Academy