Tipagem Dinâmica no JavaScript

Tipos de Dados em Tempo de Execução

3 min readJul 29, 2019

--

A tipagem do JavaScript talvez seja um dos pontos mais polêmicos em relação a quem ama ou odeia a linguagem. Quantos de nós já não ouvimos que no JavaScript é possível fazer de tudo em relação a operações com diferentes tipos de dados, sem receber erros. Esse pequeno texto visa enumerar os principais pontos que definem a tipagem dinâmica oferecida pelo JavaScript, e como obter proveito deste recurso.

Diferente de linguagens como Java, onde a definição dos tipos dos dados é obrigatória, no JavaScript este acoplamento é bem flexível.

Tipagem dinâmica é uma característica de determinadas linguagens de programação, que não exigem declarações de tipos de dados, pois são capazes de escolher que tipo utilizar dinamicamente para cada variável, podendo alterá-lo durante a compilação ou a execução do programa.

Dado isto, o JavaScript consegue converter o tipo dos dados armazenados em suas variáveis em tempo de execução, oferecendo um dinamismo não encontrado em linguagens estáticas de tipagem forte. Isto pode ser um problema, ou uma vantagem. Depende de como você utiliza a linguagem e a finalidade do seu código.

Ao compararmos alguns tipos primitivos do JavaScript como números e strings, é possível observar sua conversão dinâmica, ou em inglês, o cast de valores. Vejamos alguns exemplos:

> 1 == '1'
> true

No exemplo acima, ao compararmos o número 1, com a string de texto ‘1’ o resultado será verdadeiro. Isto acontece devido a tipagem dinâmica do JavaScript, capaz de converter os tipos de dados e realizar operações sem obter erros.

Há quem torça o nariz para operações simples de comparação no JavaScript, mas é possível contornar essa situação deixando a verificação mais segura ao usar o operador de valor e tipo igual (===). Neste caso, o tipo do dado também é avaliado, e não apenas o valor do dado. Isto não é um padrão da linguagem, ou seja, a tipagem dinâmica oferece mais liberdade caso fazer cast (conversão) de variáveis seja uma necessidade. Comparação de igualdade incluindo os tipos dos dados a serem comparados:

> 1 === '1'
> false

Outro exemplo de tipagem dinâmica no JavaScript é ao adicionar o operador unário de adição “+” junto de uma string de número. A string será convertida para um valor numérico. Exemplo:

> +'3' 
> 3 // o resultado é convertido para número

Ao fazermos a mesma operação com uma string de caracteres, o resultado será NaN, isto é, Não é Número. Lembrando que o NaN é considerado um tipo de número — mesmo não sendo um número (bizarro, mas compreensível):

> +'dan' 
> NaN

Ao somarmos um número com uma string, o JavaScript converterá o número em string e fará uma concatenação:

> 3 + '3' 
> '33'

Porém, ao subtrairmos valores, o comportamento do operador unário de subtração é diferente do de adição. Ele sempre converterá os valores de string para números e realizará a operação matemática retornando o valor em numeral:

> '3' - '1' 
> 2

O JavaScript faz isto pois o operador ‘-’ é utilizado apenas em operações matemáticas, já o operador ‘+’ é utilizado para adição, mas também para concatenação.

Ao tentarmos fazer uma operação com o operador unário de subtração em uma string, o resultado será convertido para número. Veja a seguir:

> -'2' 
> -2

Os operadores unários não causam efeitos colaterais, ou seja, eles não alteram o valor da variável, eles apenas alteram o resultado em tempo de execução:

> var x = '2' 
> undefined
> x
> '2'
> -x
> -2
> x
> '2' // x continua valendo '2'
> +x
> 2 // converte string para número
> x
> '2' // x continua valendo '2'

Referências adicionais sobre Tipagem Dinâmica:

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Dan Vitoriano
Dan Vitoriano

Written by Dan Vitoriano

📱💻 Engenheiro de software, professor e LinkedIn Creator. Tutoriais e artigos sobre tecnologia e programação. Eu era o Idman na blogosfera gay dos anos 2000.

No responses yet

Write a response