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 on

Python não é de dipagem dinâmica?

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

Create an Account! The only reason people scroll to the bottom...  
is because they want to read more.

Create an account to bookmark, comment, and react to articles that interest you.