image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
JoseJuarez Junior
JoseJuarez Junior10/01/2024 20:44
Compartilhe

TypeScript - Generics básico

  • #TypeScript

Em seus estudos de TypeScript talvez você tenha visto o termo "Generics", e caso você seja iniciante em programação ou ainda não tenha conhecimento em Programação Orientada a Objetos, como Java e C#, tenha se perguntado: O que é Generics?

Definição de Generics

Segundo a da documentação oficial do TypeScript, Generics é definido como:

"...um componente que pode funcionar sobre uma variedade de tipos em vez de um único. Isso permite que os usuários consumam esses componentes e usem seus próprios tipos".

Ficou muito abstrata essa definição? Vamos desenvolver um exemplo simples.

Criando uma função sem Generics

Digamos que queremos criar uma função que concatena dois arrays de números. Fazemos o seguinte:

image

E se agora tivéssemos que concatenar dois arrays do tipo string. Como faríamos? Iríamos copiar o método e apenas alterar os tipos dos parâmetros e retorno?

image

Deu certo. Funciona!

Essa é uma alternativa, porém iríamos ao encontro de uma má pratica que é a duplicação de código.

Devemos evitar a duplicação de código promovendo a consistência, assim evitaremos a necessidade de fazer 

alterações em várias partes do código, quando se alteram requisitos, por exemplo.

Porém alguém poderia dizer: "Isso é fácil de resolver. É só tipar com o tipo any". Vamos implementar dessa forma:

image

Realmente, isso funciona. Porém há um problema nessa abordagem. É possível adcionar um valor de qualquer tipo no array.

Um array de string aceita um number e vice-versa, por exemplo:

image

Talvez esse cenário seja o desejado. Mas na grande maioria das vezes, não é desejável a mistura de tipos em um array.

É nesse cenário que Generics nos ajudam.

Criando uma função com Generics

Para utilizar Generics, inserimos após a declaração do nome da função, na tipagem dos parâmetros e na tipagem do retorno da função o seguinte código: "<T>":

image

A utilização do "T" é uma convenção adotada por alguns, porém no lugar pode ser utiliza outra letra ou até uma palavra.

O importante é termos em mente que esse "<T>" será substituído pelo tipo informado ao se chamar a função.

Para deixar um pouco melhor essa função, poderíamos usar o operador spread na declaração dos parâmetros da função. Com ele podemos informar inúmeros parâmetros, que eles serão transformados em um array.image

Apenas fique atento na chamada da função, onde o tipo é um array de um tipo.

Conclusão

Vimos aqui apenas um pequeno exemplo do poder de Generics, porém que já nos dá um grande vislumbre da infinidade de possibilidades. Criamos um método sem Generics e depois implementamos o mesmo método utilizando Generics. Isso já foi o suficiente para nos mostrar o quanto isso pode tornar poderoso o nosso código.

Compartilhe
Comentários (0)