0Pricing
Kotlin Academy · Aula

Apelidos de Tipos

Dê nomes a tipos complexos

Apelidos de Tipos é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

O que é um alias de tipo

Um alias de tipo dá um novo nome a um tipo existente. Ele não introduz um novo tipo — é apenas uma ferramenta de legibilidade resolvida em tempo de compilação.

Você declara um alias com a palavra-chave typealias.

typealias Name = String

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

Dando nomes a tipos de função

Os tipos de função podem ser extensos. Um alias torna as assinaturas muito mais fáceis de ler.

typealias Handler = (String) -> Unit

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

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

Dando nomes a tipos genéricos

Tipos genéricos profundamente aninhados, como Map<String, List<Int>>, ficam mais fáceis de ler com um alias.

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

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

Aliases são transparentes

Como um alias é o mesmo tipo, os valores são totalmente intercambiáveis. Name e String podem ser misturados livremente, sem conversão.

typealias Name = String

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

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

Aliases parametrizados

Um alias de tipo pode ter seus próprios parâmetros de tipo, repassando-os ao tipo subjacente.

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

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

Criando alias para classes aninhadas

Um caminho longo para uma classe aninhada ou interna pode receber um alias curto, reduzindo o excesso e a desorganização dos imports.

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

typealias Shortcut = Outer.Inner

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

Melhorando a legibilidade do domínio

Os aliases comunicam a intenção. typealias UserId = Int documenta que um inteiro representa a identidade de um usuário, embora o compilador ainda o trate como 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")
}

Nenhuma segurança de tipos adicional

Esteja ciente: como os aliases são transparentes, o compilador não impedirá que você passe um UserId onde se espera um alias diferente de Int. Eles servem como documentação, não como mecanismo de imposição.

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
}

Apenas no nível superior

Os aliases de tipo devem ser declarados no nível superior de um arquivo. Você não pode defini-los dentro de funções ou classes. Coloque-os próximos ao código relacionado ou em um arquivo dedicado.

typealias Callback = () -> Unit

fun run(cb: Callback) = cb()

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

Quando usar aliases

Prefira aliases de tipo quando:

  • Um tipo de função ou genérico for longo e repetido
  • Você quiser nomes autoexplicativos para tipos primitivos
  • Precisar de uma forma curta para um tipo aninhado

Quando precisar de segurança de tipos real, use uma classe de valor.

Alias versus classe de valor

Um alias é o mesmo tipo com um novo nome — segurança zero. Uma classe de valor é um tipo distinto que impede a mistura de valores. A próxima lição aborda classes de valor.

Verificação rápida

Teste sua compreensão sobre aliases de tipo.

Recapitulação

Você aprendeu sobre aliases de tipo:

  • Declarados com typealias no nível superior
  • Apenas um novo nome, totalmente transparente
  • Ótimos para tipos de função, genéricos e legibilidade
  • Não adicionam segurança de tipos

Em seguida: classes de valor embutidas para encapsulamento sem custo adicional.

Perguntas Frequentes

A aula “Apelidos de Tipos” é grátis?

Sim — o texto completo de “Apelidos de Tipos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “Apelidos de Tipos”?

Dê nomes a tipos complexos Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Apelidos de Tipos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Apelidos de Tipos
  2. Classes de Valor Embutidas
  3. Casos de Uso
  4. Limitações
← Voltar para Kotlin Academy