Tipar ou não tipar?
Introdução à tipagem em Javascript
O desenvolvimento com a linguagem Javascript está presente em praticamente tudo que utilizamos no nosso dia a dia. Sim, praticamente tudo que você visualiza no seu navegador utiliza Javascript, inclusive este blog.
Todos os grandes players utilizam Javascript em suas plataformas, não somente em front-end mas também, ele já possui seu espaço no back-end junto ao NodeJS.
Porque Javascript é tão popular ?
Acredito que o ponto central para esta reposta esteja na internet, quando mencionei internet, eu quis mencionar que o Javascript está diretamente ligado a internet, e a popularidade da linguagem se deve a isto. JavaScript se tornou um sucesso por ser simples e principalmente por ter transformado navegadores em plataformas onde podemos criar aplicações modernas e robustas.
Porque prover tipos ao Javascript visto o sucesso já constatado?
Existem diversos pontos que serão relatados e que fazem disto algo realmente viável:
- Tipos nos dão uma maior confiabilidade a aplicação
- Menor dor na refatoração e manutenção da sua code base.
- Tipos nos ajudam a evitar bugs em tempo de escrita, isso evita erros em runtime.
- Tipos nos proveem uma documentação de forma indireta.
- Não precisamos temer os tipos visto que no final teremos o nosso Javascript como resultado final.
Escrita
Sempre que há uma discussão sobre, alguém menciona que com tipos você precisará escrever mais e isso é realmente uma verdade. Por ser uma linguagem segura, você precisa mencionar e escrever de uma forma que sua aplicação tenha conhecimento de como se comportar. Este é um custo benefício que a linguagem nos traz e pode ser o fator de uma certa resistência de desenvolvedores Javascript mas em contra partida, você terá uma aplicação mais segura.
Uma melhor adequação e integração de novos desenvolvedores também são um dos recursos que podem ser ponderados. É mais fácil compreender a sua code base, onde como já mencionamos acima, existe toda uma auto documentação que é provida pela declaração dos tipos.
Produtividade
Pode parecer controverso, mas mesmo tendo a necessidade de escrevermos mais, durante um tempo você verá que a produtividade será uma grande verdade. Os tipos nos auxiliam muito na integração com a linguagem, evitando muitas vezes nos depararmos com dúvidas simples sobre o que uma determinada função tem como dever em nossa base e até mesmo com o auto complete que o intellisense nos oferece. Esses e outros recursos poderão ser notados e todos visam trazer uma maior segurança a você e ao usuário final que utilizará sua aplicação.
Qual static type checking escolher?
Hoje no ecossistema Javascript possuímos duas possibilidades de escolha mais utilizadas que são o Flow e Typescript. Ambos são projetos open sources que possuem a mesma finalidade, prover tipos ao Javascript.
Flow é mantido e criado pelo Facebook, estando presente em diversas ferramentas e também no uso interno de produtos do Facebook. Do outro lado temos o Typescript que foi criada e mantido pela Microsoft.
Quando mencionei que o Facebook utiliza o seu próprio static type check(Flow) em seus produtos é uma grande verdade, porém, ultimamente eles começaram a reescrever e utilizar Typescript internamente. Isto demonstra o grande poder da ferramenta e a força que mesma está tendo na comunidade Javascript e confirma a sua popularidade.
Hoje na minha opinião, acredito que os maiores recursos e maturidade estão presentes no Typescript e por este motivo apontaria este como a melhor solução entre as duas opções. Quando a comunidade está aliada a uma determinada tecnologia, isso traz diversas vantagens como a colaboração, resolução de problemas e uma menor curva de aprendizado.
E agora? Devo reescrever minha aplicação?
Acredito que se fizer sentido ao seu cenário, você deve e pode dar uma chance ao Typescript e isso pode ocorrer de forma gradual. Não necessariamente você terá que reescrever todo o seu código para começar a utilizar Typescript. Existe a possibilidade de a partir de um determinado ponto você começar a utilizar Typescript em seu projeto.
Para mais informações você poderá consultar a documentação oficial do Typescript em: https://www.typescriptlang.org/docs/home.html
Onde me encontrar:
- Linkedin: https://www.linkedin.com/in/isacjunior/
- Github: https://github.com/isacjunior