TypeScript com NodeJS?!
📚 Um pouco de teoria…
Sempre bom dar uma lida antes não? 😅
Mas o que é o TypeScript?
Bom primeiramente, TypeScript não é uma linguagem de programação mas sim um superset, podemos dizer que é um conjunto de ferramentas em cima do JavaScript que adiciona tipagem estática no mesmo. Ou seja, ele propõe uma tipagem bem definida, uma escrita de código bem mais organizado e abstrações melhores definidas para Programação Orientada a Objetos.
Tipagem estática é definir o tipo que a variável tem ex: string, number. E também conseguimos definir tipos para parâmetros e retornos de funções, entre outros.
Acredito que temos muitos mais ganhos utilizando o TypeScript do não o utilizando. E uma dessas razões é pelo simples fato de reduzir bugs no momento de desenvolvimento, e isso permite que você escreva um código coeso, legível e livre de erros.
Se você utilizar uma boa IDE como o VSCode, você acaba ganhando algo ali que chamamos de IntelliSense que auxilia bastante na hora do desenvolvimento, como: informações sobre parâmetros, métodos, autocompletar, etc.
💻 Agora na prática…
Bom chega de papo, e show me some code 😃
Tipos
Acima temos um exemplo de uma simples função de soma de 2 números em JavaScript, mas agora olhe os exemplos abaixo e veja o que acontece se passarmos algo que não seja um número.
Se fosse em alguma aplicação mais complexa isso seria um problema não? Pois nem sempre podemos controlar sua estrutura. E isso acaba fazendo com que o nosso código seja mais suscetível a falhas.
Com a tipagem podemos resolver isso, veja só…
A checagem automática já verifica e nos avisa sobre o problema, informando o que foi passado de errado e qual o tipo correto. E com isso também qualquer outro desenvolvedor que for dar manutenção no código já vai entender os parâmetros que precisa passar.
Interfaces
Muitas das vezes precisamos criar estruturas mais complexas e para isso existem as interfaces.
Pode-se também trabalhar com funções nas interfaces do TypeScript. Assim quando for implementar a interface deverá implementar as funções definidas nela.
Enums
Esse é um dos poucos recurso que existe apenas no nível do TypeScript, onde você consegue definir um conjunto de constantes.
Com os enums podemos trabalhar com 3 tipos: numéricos, texto (string) e heterogeneous. Esse último aceita todos os tipos juntos (strings e números).
Classes
Classes não são novidades no JavaScript, assim como outros recursos da linguagem, o TypeScript também adiciona anotações de tipo e outras sintaxes para permitir que você expresse relacionamentos entre classes e outros tipos. E ela funciona basicamente como em outras linguagens Orientadas a Objetos.
Também podemos usar o implements com a interface.
Generics
Bom vimos aqui: tipos, interfaces, classes, enums e também como tudo isso pode nos ajudar a escrever um código melhor, mas se agora eu precisar de algo cuja a sua estrutura não esta bem definida, ou precisar que aceite mais de um tipo de parâmetro ou retorno, e que seja reutilizável?
Então, agora para isso o TypeScript nos fornece o Generics, que cria um componente que pode funcionar de vários tipos ao invés de um só. Ou seja, tipar dinamicamente, sendo flexível.
Existe também a possibilidade de utilizar o tipo any, porém ele permite TODOS os tipos. E quando utilizamos o Generic, iremos capturar o tipos que nos é passado.
👩🏻💻 Considerações finais…
Bem simples não é mesmo?! Com o uso do TypeScript no dia a dia não é difícil de implementar e trás muitas vantagens para o seu time.
É isso aí pessoal 😃