Aniversário
Alura '2025

20% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

Javascript ou Typescript?

Felipe Nascimento
Felipe Nascimento

Compartilhe

Introdução

Javascript é uma linguagem de programação fácil de começar. Pode ser usado do lado do cliente e/ou do lado do servidor, é uma linguagem dinâmica, flexível, tem um ecossistema maduro, possui primitivos de linguagem como string, número e objeto, porém ela não verifica se você atribuiu os tipos de forma consistente e é aí que começa o debate.

Sendo uma linguagem dinamicamente tipada, isso significa que o JavaScript não sabe qual é o tipo de uma variável até que seja realmente instanciada em tempo de execução. Isso também significa que pode ser tarde demais.

TypeScript

Segundo a documentação da linguagem TypeScript:

TypeScript mantém uma relação incomum com o JavaScript, ou seja, oferece todos os recursos do JavaScript e uma camada adicional sobre eles: o sistema de tipos TypeScript.

Por exemplo, nessa função:

function aumento(salario, aumento){
 return salario + aumento
}
aumento(10, "30")

Só vamos descobrir o erro quando o código rodar no navegador, já TypeScript adiciona suporte de tipo para JavaScript e captura erros de tipo durante a compilação. Se passarmos esse código para Typescript:

A mensagem de erro vai aparecer logo na nossa frente dizendo que esperávamos dois inteiros e passamos um inteiro e uma string no parâmetro devido ao sistema de tipagem.

Uma outra característica interessante é que em JavaScript é muito comum nós criarmos objetos e passar algumas características, como por exemplo:

const produto = {
  id:  1,
  nome:  "Copo",
};

Com TypeScript mantemos a mesma estrutura, porém utilizamos uma interface:

interface Produto {
  id: number;
  name: string;  
}

Usar TypeScript vai te trazer algumas vantagens como:

  • Feedback mais rápido de erros;
  • Processo de refatoração mais fácil;
  • Autocomplete da linguagem, muito boa no vscode;
  • Poder adotar gradualmente typescript em uma base de código;

Porém, adotar TypeScript pode fazer com que a produtividade do time caia em um primeiro momento, pois existe uma curva de aprendizado que não pode ser ignorada, outro ponto é que para usar TypeScript, você precisa de um processo de construção para compilar para código JavaScript. O processo de construção pode demorar um certo tempo dependendo do tamanho do seu projeto.

Se você usa JavaScript em projetos **NextJS, por exemplo, uma alternativa para fazer essa checagem de tipos é utilizar PropTypes.

import PropTypes from 'prop-types';
// código omitido
export const Link = ({ children, href, ...props }) => (
  <NextLink href={href} passHref>
     <StyledLink {...props}>
  	{children}
	</StyledLink>
  </NextLink>
);
Link.propTypes = {
  href: PropTypes.string.isRequired,
  children: PropTypes.node.isRequired,
};

Lembrando sempre que TypeScript não é uma solução mágica que resolve todos os problemas em JavaScript e também não é uma substituição total.

Se deseja saber mais sobre a história da linguagem, assista no canal hipsters da Alura no YouTube o vídeo O que é Javascript.

Gostou do conteúdo e quer aprender mais sobre o assunto? Então acesse a Formação Front-end da Alura e mergulhe nesse mar em JavaScript.

Felipe Nascimento
Felipe Nascimento

Desenvolvedor e instrutor na Alura com foco em JavaScript.

Veja outros artigos sobre Front-end