TypeScript vs. JavaScript: Qual linguagem escolher em 2024?

Uma dúvida comum que surge frequentemente é: qual a distinção entre JavaScript e TypeScript?

Vamos explorar essa questão…

Desde os seus primeiros passos na programação, o JavaScript (JS) provavelmente fez parte de todos os seus projetos de front-end. Se você já tem alguma familiaridade com JS, pode considerar o TypeScript como uma evolução do JS, com funcionalidades adicionais que melhoram a organização e a tipagem do seu aplicativo. O TypeScript foi criado como um projeto de código aberto pela Microsoft, visando otimizar o desenvolvimento em JS e identificar erros de compilação logo no início do processo.

Neste artigo, vamos analisar alguns aspectos importantes do JavaScript e do TypeScript, destacando as diferenças entre essas duas linguagens de script.

O que é JavaScript?

JavaScript é uma linguagem usada para scripts do lado do cliente. Você pode incorporar um script diretamente em uma página HTML ou criar um arquivo com a extensão .js e incluí-lo no seu arquivo HTML. Um exemplo prático de uso do JavaScript é na validação de formulários de login, onde uma mensagem de erro é exibida caso o nome de usuário ou a senha estejam incorretos.

Vamos criar um código JS simples e executá-lo em um navegador:

Crie um arquivo chamado example.html e adicione o seguinte trecho de código:

<script>

sentimento = 'alegre';

sentimento = 23;

</script>

Este código simples declara uma variável e atribui a ela o valor “alegre” (string). Em seguida, atribuímos um valor de um tipo diferente (número) à mesma variável. O JavaScript não irá gerar nenhum erro nesse caso e o código será executado sem problemas em qualquer navegador. Agora, vamos obter o valor do sentimento do usuário:

Nosso HTML será:

<input type="textbox" id="comoestaseusentindo">

e o script:

sentimento = document.getElementById("comoestaseusentindo").value;

A menos que implementemos verificações explícitas no script, o JS aceitará qualquer valor fornecido pelo usuário e o atribuirá à variável. Portanto, você pode inserir qualquer coisa, como 234, @.#$%, etc., na variável “sentimento”.

Características do JavaScript

Com base no que vimos, podemos identificar as seguintes características do JavaScript:

  • Linguagem de script com tipagem fraca
  • Utilizado para scripts do lado do cliente e do lado do servidor (com Node.js)
  • Flexível e dinâmico
  • Suportado por todos os principais navegadores
  • Leve e interpretado

Se você deseja se aprofundar no JavaScript, confira este Curso Udemy.

O que é TypeScript?

Em um aplicativo real, muitas validações e verificações dinâmicas são necessárias. Para esses aplicativos, o código JavaScript pode se tornar difícil de testar, principalmente pela falta de verificação de tipos. Ao receber valores de usuários, é fundamental validá-los logo no início. É nesse cenário que o TypeScript se destaca.

TypeScript é uma linguagem fortemente tipada, com um compilador que sinaliza um erro se o tipo de uma variável não for definido.

Tanto o JavaScript quanto o TypeScript seguem as especificações ECMAScript para uma linguagem de script. O TypeScript é capaz de executar todo o código JavaScript e suporta todas as suas bibliotecas. Por isso, é considerado um superconjunto do JavaScript.

Instalação do TypeScript

Para executar nosso código anterior em TypeScript, precisamos instalar o compilador TypeScript utilizando o pacote npm (caso você tenha o Node.js instalado).

npm install -g typescript

Ou você pode baixá-lo diretamente da página oficial de downloads da Microsoft: Página de downloads da Microsoft. Você também pode utilizar o Playground TS para observar como o código é transcompilado de .ts para .js.

Após a instalação, você pode definir as configurações do projeto no arquivo tsconfig.json e utilizar qualquer IDE ou editor de texto para escrever o código TypeScript e salvá-lo com a extensão .ts.

É possível não definir o tipo de uma variável e deixar que o TypeScript infira o tipo de dado. No entanto, você receberá um erro se tentar atribuir um valor de um tipo diferente do primeiro utilizado (no nosso caso, uma string), durante o processo de compilação.

É sempre recomendável adicionar anotações de tipo ao código para facilitar a manutenção e o uso:

var sentimento: string = "alegre";

E não para por aí!

O TypeScript oferece muitos outros recursos para facilitar a vida de um desenvolvedor.

Recursos do TypeScript

O TypeScript possui um conjunto robusto de funcionalidades, com cada nova versão trazendo aprimoramentos para tornar o desenvolvimento ainda mais prático. Por exemplo, na versão mais recente (4.0), foram adicionados recursos como tipos de tuplas variáveis, fábricas JSX personalizadas, inferência de propriedades de classe a partir de construtores, entre outros. Algumas características típicas do TypeScript são:

  • Suporte a conceitos de programação orientada a objetos como interface, herança, classe e genéricos.
  • Detecção antecipada de erros.
  • Suporte IDE com verificação de sintaxe e sugestões.
  • Facilidade de depuração devido à tipagem.
  • Transcompila para JavaScript.
  • Utilizado para aplicações do lado do servidor e do lado do cliente.
  • Suporte a diversas plataformas e navegadores.
  • Compatível com todas as bibliotecas e extensões JS.

Por que precisamos do TypeScript? (Vantagens do TypeScript sobre o JavaScript)

A Microsoft desenvolveu e utilizou o TypeScript internamente por dois anos antes de torná-lo público em 2012. A empresa criou um JavaScript com tipagem porque essa abordagem tornava mais fácil o teste do código para aplicações corporativas de nível de produção. Você ainda pode utilizar os recursos de tipagem dinâmica, mas também pode tipar as variáveis quando necessário.

Observe o código abaixo:

var meunum = //obter do usuário;

adicionarDez(numero){

return numero + 10;

}

O resultado esperado é sempre um número. Mas, e se o usuário inserir “ovelha”? A saída será “ovelha10” – o ideal é informar ao usuário que esta operação não é possível!

Além disso, quando as informações de tipo estão disponíveis, os editores de texto e IDEs se tornam mais práticos, economizando tempo e evitando erros em tempo de execução. A refatoração do código também se torna mais simples.

Isso significa que não precisamos mais do JavaScript? (Desvantagens do TypeScript sobre o JavaScript)

O TypeScript pode ser visto como uma extensão do JavaScript, mas não como um substituto.

Em pequenos trechos de código, o uso do TypeScript pode se tornar um fardo, pois a instalação, compilação e transcompilação são etapas extras desnecessárias. Com JavaScript, você pode simplesmente escrever o seu script em HTML e executá-lo. A depuração do código também é mais fácil, pois você pode simplesmente atualizar o navegador sempre que modificar algo.

Comparação Direta

Agora que entendemos os recursos e vantagens do TypeScript e do JavaScript, vamos realizar uma comparação mais direta:

TypeScript JavaScript
Uma linguagem tipada que detecta erros de compilação antecipadamente. Erros podem ser identificados durante a execução.
Ideal para projetos grandes, pois melhora a capacidade de manutenção e a legibilidade do código. Com o aumento do código, torna-se mais difícil de testar e depurar. O JS é mais adequado para projetos menores.
Superconjunto do JS, ou seja, oferece recursos como orientação a objetos, verificação de tipos, entre outros. Uma linguagem de script que oferece suporte à criação dinâmica de conteúdo web.
Requer a instalação do compilador e configuração. Não há necessidade de nenhuma instalação; O código JS pode ser escrito diretamente no navegador usando a tag <script>.
Todos os arquivos .ts são convertidos em arquivos .js antes da execução; processo conhecido como transcompilação. Desenvolvedores podem incluir diretamente arquivos .js em arquivos HTML para execução usando a tag <src>.
Poderoso e intuitivo com recursos avançados como módulos, genéricos e interfaces. Adequado para aplicações web simples que não exigem funcionalidades avançadas.
Utilizado para scripts do lado do servidor e do lado do cliente. Fácil de usar para scripts do lado do cliente, mas pode se tornar pesado e complexo para scripts do lado do servidor.
A execução leva mais tempo devido à etapa de compilação. Nenhuma compilação é necessária, portanto, a execução é mais rápida.
Suporta tipagem estática e dinâmica. Suporta apenas tipagem dinâmica.
Podemos especificar anotações de tipo, como: var sentimento: string = “feliz”; Não é possível especificar anotações de tipo, pois não é possível definir tipos.

Conclusão

Do ponto de vista do aprendizado, o JavaScript pode ser o caminho mais natural. Você abre um arquivo, escreve algo dentro das tags <script></script>, salva como HTML e já pode visualizar os resultados! A partir daí, é possível construir conteúdo mais dinâmico.

Além disso, em um cenário onde você trabalha em um aplicativo de grande escala, o conhecimento em JavaScript o ajudará a migrar facilmente para o TypeScript.

No entanto, sob uma ótica de carreira e remuneração, um Desenvolvedor TypeScript terá mais flexibilidade e domínio em projetos JS e TS, sendo um profissional mais valorizado no mercado. Normalmente, desenvolvedores de TypeScript recebem entre US$ 110 mil e US$ 147 mil, enquanto desenvolvedores de JS recebem entre US$ 63 mil e US$ 118 mil por ano.