Skip to content
Latchkey

O Que É Inferência de Tipos? Tipos Sem Anotações

Inferência de tipos é a capacidade de um compilador de deduzir os tipos de variáveis e expressões automaticamente, então você obtém a segurança dos tipos estáticos sem anotar tudo.

Tipagem estática não precisa significar escrever tipos por toda parte. Com inferência de tipos, o compilador descobre os tipos a partir do contexto: se você atribui o número 5 a uma variável, ele sabe que a variável é um número. Linguagens como Rust, Go, Kotlin e TypeScript inferem agressivamente, dando a você verificação estática completa com muito menos cerimônia de tipagem.

Como a inferência funciona

O compilador analisa como os valores são produzidos e usados, então atribui o tipo mais específico consistente com esse uso. Atribuir um literal de string infere uma string; chamar uma função usa seu tipo de retorno declarado. Os tipos inferidos são tão reais e verificados quanto os escritos.

O que a inferência lhe traz

  • Menos boilerplate: menos anotações explícitas para escrever e manter.
  • Segurança estática completa mesmo sem soletrar cada tipo.
  • Código mais limpo que ainda se beneficia da verificação do compilador.
  • Refatoração mais fácil, já que os tipos seguem o código automaticamente.

Onde você ainda anota

A inferência tem limites. Parâmetros de função, fronteiras de API pública e casos ambíguos frequentemente ainda precisam de tipos explícitos, tanto porque o compilador não consegue adivinhar a intenção quanto porque as anotações documentam o contrato para os leitores.

Inferência não é tipagem dinâmica

Uma confusão comum: tipos inferidos ainda são estáticos. O compilador fixa o tipo em tempo de compilação; você apenas não o escreveu. Isso é fundamentalmente diferente da tipagem dinâmica, onde os tipos são decididos em tempo de execução.

Um exemplo rápido

Em TypeScript, let count = 0 infere count como um número. Escrever depois count = "hi" é um erro de compilação, mesmo que você nunca tenha escrito a anotação de tipo.

Inferência de tipos em CI

A inferência mantém o build como um forte portão de verificação de tipos sem código verboso, e erros de tipo inferidos falham deterministicamente em CI. A verificação de tipos de projetos grandes pode ser intensiva em CPU e memória; runners maiores (Latchkey) a aceleram e repetem automaticamente OOM transitórios ou falhas de toolchain.

Principais conclusões

  • A inferência de tipos deixa o compilador deduzir tipos, então você escreve menos anotações.
  • Tipos inferidos são totalmente estáticos e verificados, ao contrário da tipagem dinâmica.
  • Você ainda anota fronteiras de API e casos ambíguos por clareza e correção.

Guias relacionados