O TypeScript é uma linguagem poderosa que pode elevar o nível dos seus projetos. Entenda porque ela existe e como explorá-la ao máximo em seu favor!
Tempo de Leitura: 4 minutos
Pronto para explodir a sua mente conhecendo e explorando as possibilidades do TypeScript? Essa linguagem de programação tipada, de código aberto e derivada do JavaScript é uma excelente ferramenta para ter em mãos. Mas isso só se torna verdade se você entende o real motivo do TypeScript existir.
No TecnoUpdate for DEV 2022, William Grasel, que é Senior Staff Front-End Engineer do iFood, especialista em desenvolvimento de aplicações web e integrante dos Programas Google Developers Experts e Microsoft MVP (Most Valuable Professional), bateu um papo com a gente justamente sobre este tema.
No entanto, se você não estava presente no TUP4DEV e perdeu essa fala cheia de valor e insights, você pode conferir os destaques dela neste artigo. Acompanhe até o final para ampliar seu conhecimento sobre TypeScript, suas inferências, benefícios e muito mais!
TypeScript e inferência de tipos
Um pensamento equivocado, porém, recorrente que costuma surgir entre desenvolvedores que estão iniciando no TypeScript é que, para e durante o seu uso, é necessário tipar todos os elementos e variáveis do seu código.
No entanto, um detalhe importante é que a inferência de tipos no TypeScript é muito poderosa e lembrar-se dessa informação é fundamental para utilizar o TypeScript de forma realmente vantajosa, como deve ser.
Mas o que é inferência de tipos?
Inferência é a capacidade de uma linguagem de programação de inferir, ou seja, “adivinhar”, deduzir qual é o tipo do dado de determinadas variáveis, parâmetros de entrada, saídas de funções, entre outros elementos nesse sentido.
Em outras palavras, a inferência de tipos é uma espécie de inteligência que algumas linguagens de programação possuem, que permite automatizar a tipagem de variáveis durante o desenvolvimento. Elas se demonstram como sugestões ou atalhos, que podem ser aceitos ou não pelo desenvolvedor.
Benefícios do TypeScript
O TypeScript existe para facilitar a sua vida, sua tipagem ajuda a prevenir erros e garante mais qualidade e segurança para o seu código, além de auxiliar em possíveis refatorações. Mas, ao mesmo tempo, essa organização traz previsibilidade ao código, o que permite inferências de tipos com mais eficiência e a resolução de problemas ainda na compilação.
E é exatamente pela ampla capacidade de inferência que essa linguagem apresenta e pelo valor que isso pode gerar ao desenvolvimento e ao desenvolvedor que William defende que a “inferência de tipos é o real motivo do TypeScript existir.”
Exemplos práticos de como a inferência de tipos é aplicada no TypeScript
Falando da inferência, na prática, o que ocorre é que o TypeScript consegue inferir os tipos das variáveis com base nos valores atribuídos a elas. Isso significa que você não precisa perder tempo tipando todas as suas variáveis e pode, ou melhor, deve deixar o TypeScript fazer isso por você!
Quer ver uma demonstração das inferências do TypeScript? O William trouxe alguns exemplos para gente e você pode visualizá-los no vídeo:
Viu só? A ideia é parar de tipar coisas desnecessariamente e ganhar tempo e eficiência com isso! Mas talvez você esteja se perguntando: mas como saber quando eu preciso ou vale a pena tipar uma variável?
Bom, existem algumas dicas para isso! A primeira delas é combinar o Strict Mode do TypeScript e o ESLint.
O Strict Mode é o modo de configuração mais completo do compilador do TypeScript. Com ele ativo, o compilador irá exigir a tipagem de todas as variáveis que o TypeScript não for capaz de inferir (função noImplicitAny).
Já o ESLint conta com a regra “no-inferrable-types” que faz justamente o contrário: te impede de tipar variáveis que o TypeScript for capaz de inferir. Desse modo, você tem a garantia de que irá tipar o que precisa, e somente isso!
E, para além dos casos de No Implicit Any, em que o TypeScript não consegue inferir a tipagem de uma variável, vale a pena tipar, apesar da inferência realizada pelo TS, em casos de:
- Variáveis do tipo let não inicializadas;
- Variáveis do tipo let inicializadas, mas que poderão receber novos tipos de valores no futuro;
- Variáveis do tipo const inicializadas como objetos cuja propriedade possa receber outros tipos de valores no futuro.
Inferências mais avançadas no TypeScript
Depois de conhecer o funcionamento básico das inferências de texto do TypeScript, que tal darmos um passo adiante?
Existem funções no TypeScript que são interessantes de conhecer e manter na manga para gerar inferências mais avançadas durante o processo de desenvolvimento. Elas, assim como as inferências mais simples, podem te ajudar a ganhar qualidade e tempo em seus projetos, porém em um nível ainda mais específico e poderoso.
Quer conhecê-las e adicioná-las ao seu repertório? Confira a demonstração completa do William no vídeo pelo link no final do artigo.
Generics no TypeScript
Se você acompanhou os exemplos mais avançados de inferências no vídeo, viu o quanto as inferências podem ser cruzadas e usadas para criar novos tipos.
No entanto, o TypeScript nem sempre consegue retornar as inferências mais exatas possíveis, e é aí que entra o Generics no TypeScript – por mais contraditório que isso possa parecer.
O Generics permite “criar um componente que pode funcionar em vários tipos, em vez de em um único”, segundo a documentação do TypeScript.
E a partir dessa versatilidade é possível ajudar o TypeScript a fazer inferências mais assertivas. Afinal, consegue-se definir regras mais amplas/genéricas que serão aplicáveis independente do tipo dos valores inseridos.
Quer ver na prática? De volta à demonstração do William (que você poderá visualizar no vídeo abaixo)! Nela, você visualiza não só essa lógica, mas aprende a criar tipos genéricos (básicos, especializados, dinâmicos), restringi-los, torná-los parâmetros e muito mais… tudo com várias dicas e detalhes técnicos valiosos e imperdíveis!
E depois de conhecer toda a potência do TypeScript e como começar a explorá-la, que tal se conectar com outros DEVs e Software House da nossa comunidade e continuar trocando conhecimentos sobre Desenvolvimento?
No fórum de Desenvolvimento, você vai poder aprofundar ainda mais seu repertório sobre TypeScript e outras linguagens e temas do mundo da programação. Participe!