TypeScript - Amor e ódio... pera aí, ódio?
TypeScript
Pra quem não conhece ou não usa, TypeScript nada mais é do que um SuperSet de JavaScript desenvolvido pela microsoft em 2012. A proposta principal do TypeScript é implementar a tipagem explícita de dados ao JavaScript. Desse modo, diminuindo a possibilidade de bugs ao longo do desenvolvimento, contribuindo com a colaboração no código, e potencializando ferramentas de IntelliSense como o Visual Studio IntelliCode por exemplo.
🧑💻️ Minha experiência com TypeScript
Minha experiência individual com o TypeScript foi excelente, já que abriu caminhos na minha mente que jaziam antes trancados por falta de conhecimento do que era tipagem. Obviamente já conhecia o que são Strings, Integers, etc. mas não conhecia a possibilidade de tipagem em objetos, retorno de funções, parâmetros e por aí vai. Uma causa disso foi o uso do JavaScript como linguagem principal desde sempre. Já tinha usado Python antes, mas a tipagem é ainda mais simples que em JavaScript.
Fato é que o TypeScript traz uma experiência de desenvolvimento muito melhor e muito mais avançada do que o JavaScript sozinho é capaz de trazer. Quem nunca se matou tentando destrinchar o erro no código, refazendo lógicas e debugando, pra no fim o problema ser um parâmetro que espera o nome "foo_bar" ao invés de "fooBar". Isso era rotina pra mim usando JavaScript e sempre precisa voltar na documentação pra verificar coisas simples como o nome de parâmetros. Com TypeScript acho que isso nunca mais me ocorreu.
No fim só tive vantagens quando escolhi aprender TypeScript, o qual garante muito mais produtividade e confiança no código, além de melhorar e muito a lógica do código e a maneira de pensar de quem só usava JavaScript. Até a leitura de erros se torna muito mais prática e fácil usando TypeScript.
🤬️ Porque tanto ódio?
Após todas essas vantagens citadas acima, não consigo ver motivos para todo esse ódio ao redor do TypeScript, justificado por muitos pela complexidade a mais que ele traz pro código, o que pra mim não faz o mínimo de sentido a não ser que você goste de escrever código frágil e de difícil entendimento só pra não ter que aprender algo que no fim é tão simples como definir uma variável mas traz uma estrutura absolutamente superior se comparado a códigos sem tipagem (claro que no fim isso vai depender unicamente do próprio desenvolvedor e não da tecnologia sendo utilizada).
Talvez o ódio no fim seja resumido apenas em um preconceito, que não é nada fora do comum na área. Mas no fim das contas a realidade é que o TypeScript veio apenas para ajudar, facilitando não só o entendimento do seu código por outros desenvolvedores e até por você mesmo, mas também o processo de criação de features complexas, além de muitos outros benefícios.
Um dos profissionais de software mais competentes que existe no mundo uma vez disse:
JavaScript foi criado para fazer um macaquinho dançar na tela
Algumas pessoas ficam bravas quando ouvem isso, mas também diz muito sobre ela.
Isso é uma verdade. JS é uma linguagem interessante, tem umas coisas bem legais, e uma delas é ser uma linguagem de script, ou seja, para automatizar pequenas tarefas, e ela é ótima nisso.
Aí as pessoas começaram usar para fazer algo mais complexo, e os códigos viraram aplicações. E aí começou o problema bem descrito na postagem original.
Praticamente todas as linguagens de script começaram ser usadas para fazer aplicações e por isso começaram adotar uma pegada mais orientada a objeto e passar a ter tipagem mais robusta, que é muito importante para aplicações complexas. JS não foi totalmente nisso, por isso TypeScript foi criada. Havia uma necessidade e o comitê rejeitava a mudança.
Dá para fazer tudo com JS, mas com TS é mais fácil quando você tem uma aplicações enormes rodando.
Dá para questionar se deveria ter uma aplicação enorme rodando em um browser, mas isso é outro assunto.
Espero ter ajudado.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).
A resposta do maniero e a camplementação do kht já são ótimos, mas apenas adicionando os meus dois centavos: Se você precisa de tipos para escrever JavaScript de qualidade, talvez devesse usar uma linguagem onde os tipos são fundamentais e não uma 'gambiarra'. O TypeScript é uma solução muito complexa para um problema demasiado simples.
Como tudo na Ti é volatil e em constante melhoria, é plausivel pensarmos que até esta questão do uso do Typescript um dia caia em desuso.
Isto se o Web Assembly se tornar o padrão de uso na web, permitindo codar em ruby, python ou outras, sendo linguagens já em sua base, bem mais robustas e de sintaxe mais facil e organizada que javascript.
Seria interessante ver javascript voltando a ser novamente uma linguagem de uso apenas para manipulação de html/css, voltando ao que foi desenhado a melhor fazer.
Por isso que, esse negócio de ódio de linguagem é tão nada a ver. É o mesmo que ter ódio de chave philips, pois a chave de fenda já encaixa em todas. Encaixa, mas a philips auxilia a ter uma pegada melhor. E dai lançam a chave elétrica, que auxilia em muito mais o trabalho, seguindo o rumo de melhorias constantes. Está ai uma analogia bacana.
Estou iniciando neste grande mundo da programação, e sempre achei legal a ideia de desenvolver sites, pois são acessíveis a diversos dispositivos e quase todos tem uma acessibilidade a pessoas especiais. Recentemente tive a oportunidade de estudar mais um pouco para uma vaga de estágio em uma empresa, onde utilizam Reactjs com TypeScript para a web.
Mas, a quesrao é: Eu estou inciiando agora, e ouço a cada dia falarem mal de React e de outras tecnologias, e que JS não presta para grandes aplicações e blá blá blá. Eu fico com medo de ter focado na linguagem errada primeiro, e fico receioso em estar perdendo tempo aprendendo JS no começo, pois não quero ser dev de pequenas aplicaçõezinhas. Devo parar com JS e aprender C? Devo continuar com JS, pegar meu primeiro estágio e aprender C? Tenho uma base de linguagens POO de natureza pois no curso técnico aprendo Java principalmente