Tipagem forte e fraca
Definição
Tipagem forte e tipagem fraca são dois estilos de controle sobre os tipos de dados em uma linguagem. A diferença principal está em como a linguagem trata operações entre tipos diferentes.
Tipagem forte | Tipagem fraca |
---|---|
Não permite operações entre tipos diferentes sem conversão explícita | Realiza conversões automáticas entre tipos (coerção implícita) |
Erro ao combinar tipos incompatíveis | Pode produzir resultados inesperados, mas não gera erro imediato |
Mais segura e previsível | Mais flexível, mas mais propensa a bugs ocultos |
Por que é importante
O tipo de sistema de coerção afeta diretamente a confiabilidade do código. Tipagem forte ajuda a detectar problemas logo no início e evita erros silenciosos. Já a tipagem fraca pode facilitar operações rápidas, mas aumenta o risco de comportamentos inesperados.
Linguagens com cada abordagem
- Tipagem forte: Python, Java, C#, Ruby, Haskell
- Tipagem fraca: JavaScript, PHP, C (em alguns contextos), Perl
Vale lembrar que algumas linguagens apresentam comportamentos híbridos, dependendo do contexto ou da operação. Por exemplo, C permite certas conversões automáticas entre inteiros e ponteiros.
Exemplo em código (JavaScript e Python)
// Tipagem fraca (JavaScript)
console.log("5" - 2); // 3 (string "5" é convertida para número)
# Tipagem forte (Python)
print("5" - 2) # TypeError: unsupported operand types
Em JavaScript, a string "5"
é convertida automaticamente para
número, o que exemplifica coerção implícita. Já em Python, essa operação é
inválida sem conversão manual.