Trabalho com JavaScript para desenvolvimento web, backend e mobile há um certo tempo, recentemente comecei a usar TypeScrit nos meus projetos e fiquei muito satisfeito com o resultado. Agora resolvi escrever este post para compartilhar os meus motivos para usar TypeScript em Node.js, React.js e React Native, talvez eu possa te ajudar.
Se você desenvolve em JavaScript, sabe que é muito fácil iniciar um app em Node.js, React ou React Native. Rapidamente nosso projeto JavaScript cresce, aumenta a complexidade e mais casos precisamos prever e cobrir em nossos testes. Algo até normal.
Inicialmente está abordagem é eficiente para micro-serviços, pequenos componentes e SPAs. Quando temos uma aplicação com mais responsabilidades, outras pessoas contribuindo, não ter uma arquitetura e patterns adequados, fatalmente vamos começar a ter problemas. Só cobrir testes ou adotar linters, não é suficiente.
A prática e academia ensina que, a ausência de padrões e uma arquitetura adequada, vai se manifestar em bugs, dificuldade para identificar um erro, indisponibilidade, erros de compatibilidade, logs e depurações intermináveis, até prejuízos financeiros.
Muito dos erros de softwares podem ser evitados durante o desenvolvimento, e aí que entra o TypeScript. Se o desenvolvedor dispõe de um padrão de código e uma arquitetura bem definida, implementar uma nova feature, passa a ser uma tarefa trivial.
Porque preciso do TypeScript?
Tenho alguns motivos para sugerir, mas talvez alguém diga:
Você pode ampliar seu Coverage, aplicar Code Review, implementar um Linter e tantas outras práticas, mas TypeScript não, não gosto de Orientação a Objetos.
Algum Dev, por aí
Entendo que talvez exista uma resistência, mas o TypeScript nasceu para facilitar nosso trabalho durante o desenvolvimento. Ele nos fornece informação para escrever um código mais limpo, organizado, seguindo padrões, nos ajudando a desenvolver de forma eficiente.
Criado por Anders Hejlsberg em 2012 (criador do Delphi e Turbo pascal) e hoje mantido pela Microsoft, o TypeScript é um superset JavaScript. O TS ajuda desenvolvedores a criar e manter aplicações complexas em JavaScript, trazendo inúmeros facilidades para nossa IDE.
Quando instalado, nossa IDE passa a contar com um superset JavaScript poderoso. Aqui estão pelo menos 9 motivos para usar TypeScript:
- Integra recursos do ECMAScript 6.
- O compilador se encarrega de testar os tipos do nosso código durante o desenvolvimento, exibindo mensagens de erro e ajuda, antes de gerar o bundle do nosso app.
- Facilita o refactoring de códigos. No VSCode por exemplo, aperto F2 e altero nomes de métodos ou propriedades em todos arquivos de uma vez.
- Amplia o Intelisense do editor, com autocomplete de código, exibindo parâmetros esperados e descrições dos métodos.
- Garante consistência e padronização de código com o time.
- Permiti a construção de uma aplicação escalável, usando patterns avançados como Intersections Types, Generics, Unions, etc.
- Permiti programar Orientado a Objetos, criando classes, interfaces, enums e métodos.
- Oferece maior segurança para o time de desenvolvimento, ao manter uma tipagem forte.
- Facilita o onboarding de novos membros, o código herda princípios básicos de programação.
TypeScript e Babel
Quando usamos TypeScript em projetos Node.js ou React, precisamos de um transpilador de código, ele é responsável por converter o TS em JavaScript, gerando o Bundle da nossa aplicação.
Para gerar nosso JS, geralmente usamos Babel ou Sucrase, ambos resolvem o problema, mas existem algumas diferenças que podem interferir na sua escolha.
O Sucrase tem a vantagem de transpilar o código com muita velocidade, chega a ser 20 vezes mais rápido que o Babel. Ele assume que você está escrevendo um código JavaScript válido, ignorando a checagem de tipos, adicionalmente você vai precisar configurar um linter.
Além disso, também não oferece suporte a navegadores antigos, como o Internet Explorer, e não é indicado para gerar bundle de produção, inclusive eles não recomendam.
O Babel é mais lento, no entanto, oferece uma compatibilidade maior com os navegadores mais antigos. Também gera um bundle mais otimizado, suportando os recursos mais recentes do ECMAScript, realiza a checagem de tipos durante o build. Sua arquitetura é baseada em plugins, inclusive você pode escrever os seus próprios e de longe, é amplamente utilizado pela comunidade e usado em produção.
Na dúvida sobre o Babel ou Sucrase, recomendo que use Babel para projetos que serão publicados em produção. Utilize o Sucrase para seus estudos.
Para minha realidade, estes motivos para usar TypeScript foram suficientes. Estou trabalhando com TS e em breve vou compartilhar mais percepções. Se quiser saber mais, sobre como tenho usado, fique a vontade em entrar em contato.
Obrigado pela leitura!