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ą
typealiasna 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.