Tipagem estática e dinâmica
Definição
Tipagem estática e tipagem dinâmica são duas abordagens diferentes para o sistema de tipos em linguagens de programação. A distinção está no momento em que os tipos das variáveis são verificados.
Tipagem estática | Tipagem dinâmica |
---|---|
Tipos são definidos e verificados em tempo de compilação | Tipos são determinados em tempo de execução |
Erros de tipo podem ser detectados antes da execução | Erros de tipo só aparecem quando o código é executado |
Mais segurança e suporte por ferramentas | Mais flexibilidade e rapidez para prototipação |
Por que é importante
O modelo de tipagem adotado por uma linguagem afeta diretamente a segurança, a performance e a produtividade no desenvolvimento.
Tipagem estática ajuda a detectar erros mais cedo, melhora o suporte de IDEs e facilita o refatoramento. Tipagem dinâmica favorece flexibilidade, sendo útil em scripts, protótipos e tarefas exploratórias.
Linguagens com cada abordagem
- Tipagem estática: Java, C, C++, C#, Kotlin, Rust, TypeScript
- Tipagem dinâmica: Python, JavaScript, Ruby, PHP, Lua
Algumas linguagens modernas combinam os dois modelos. Por exemplo, TypeScript adiciona tipagem estática ao JavaScript, e Kotlin aplica tipagem estática com inferência.
Exemplo em código (Python e JavaScript)
# Tipagem dinâmica (Python)
x = 10
x = "dez"
print(x) # 'dez'
// Tipagem estática com TypeScript
let x: number = 10;
x = "dez"; // Erro: tipo string não é atribuível ao tipo number
Em Python, a variável x
pode mudar de tipo sem erro. Em
TypeScript, a variável tem tipo fixo, e o compilador impede atribuições
incompatíveis.