DEV Community

João Alex
João Alex

Posted on

Tipagem fraca, forte, dinâmica e estática

A uma grande confusão acerca de qual a diferença entre os diferentes denominações a cerca da tipagem, o intuito desde post é deixar mais claro este conteúdo.

Tipagem estática

A tipagem deve estar explicitado qual o tipo de dado para variável e não pode ser alterado, como no caso da linguagem c.

int velocity = 4;

Neste caso você não pode alterar o tipo da variável, você pode criar uma nova variável com um novo tipo de dado e fazer casting para o novo tipo, mas não fazer a variável velocity receber outro tipo de dado que não seja o dela.

int velocity = 4;
float newVelocity = (float) velocity;

Tipagem dinâmica

Este tipo de tipagem pode ser inferida pela linguagem sem ser escrita de forma explicita o tipo de dado, por exemplo a linguagem php.

$users = 5;

O php já trata a variável com o tipo inteiro sem precisar estar explicito o tipo dela. É possível além disso alterar o valor da variável para outro tipo.

$users = 5;
$users = 'cinco';

Tipagem fraca

Essa se trata quando o tipo do dado não é bem definido, a linguagem pode alterar o tipo por alguma ação, sem intervenção direta do programador, como é o caso da linguagem javascript.

const numberOne = "5"
const numberTwo = 5
console.log(numberOne + numberTwo)
// 55

Neste caso mesmo o dado numberTwo sendo number ele é convertido para string para que possa fazer a concatenação com a string.

Tipagem forte

Quando na linguagem os tipos estão bem definidos, sendo necessário a alteração do programador para ser convertido a algum tipo de dado especifico, como é o caso da linguagem python

number_one = "5"
number_two = 5
print(number_one + number_two)
# Traceback (most recent call last):
#  File "<stdin>", line 1, in <module>
# TypeError: can only concatenate str (not "int") to str

Como os tipos são bem definidos e a soma entre string e inteiros não é permitida, python lança o erro de que não pode fazer a concatenação desses dados, pedindo que o programador explicite a conversão dos dados. Por exemplo.

number_one = "5"
number_two = 5
print(int(number_one) + number_two)
# 10

Depois da conversão intencional da variável pode ser feita a soma das variáveis sem erro.

Top comments (1)

Collapse
 
pauloandrade profile image
Paulo Andrade • Edited

Python não é de dipagem dinâmica?

dev-to-uploads.s3.amazonaws.com/up...