TypeScript — Generics

Thiago S. Adriano
Comunidade XP
2 min readOct 30, 2021

--

Veja nesse artigo o que é o Generics e como trabalhar com ele no seu dia a dia

Trabalhando com Generics no TypeScript

Introdução

Seguindo a definição de *Generics* na documentação do TypeScript, ele nos permite criar um componente que pode funcionar em vários tipos, em vez de em um único. Ao contrário dos tipos de objetos não genéricos, os tipos genéricos só podem ser criados com interfaces ou classes.

O Generics não é exclusivo do TypeScript. Quem já trabalha há algum tempo com desenvolvimento de software, já deve ter criado um método genérico ou já utilizou algum da linguagem com a qual trabalhou.

Um Generics muito utilizado é o `Array`. Abrindo o GitHub do fonte do TypeScript, nós podemos ver como ele foi definido utilizando um Generics de uma interface que deve retornar um `T`:

Link do trecho de código no GitHub: lib.es2016.array.include.d.ts

Agora qual tipo o `T` representa? A princípio ainda não sabemos, só vamos descobrir quando a interface for implementada.

Depois dessa rápida introdução, vamos criar alguns exemplos práticos.

Criando uma função genérica

Para criar uma função genérica, basta adicionar as chaves `<T>`.

function funcaoGenerica<T>() {}

Agora podemos passar qualquer tipo para função `funcaoGenerica` que ela deve aceitar:

Ficou muito simples, não é? Vamos melhorar o nosso exemplo deixando-o mais próximo do nosso dia a dia:

Nessa função, nós devemos passar um tipo para `funcaoGenerica<T>`, um argumento genérico e um retorno genérico.

Nós podemos também passar mais de um parâmetro para nossa função genérica:

Note que podemos passar outros valores no lugar de `T`.

Criando uma classe genérica

Como nas funções genéricas, nós também podemos passar um parâmetro genérico para uma classe.

Criando uma interface genérica

Para demonstrar a criação de uma interface genérica, criaremos uma interface chamada `InterfaceGenerica` com um método chamado `removeItem`. Esse método deve ser utilizado para remover um item da nossa `classeGenerica`:

Validando a implementação do método `removeItem` na classe `classeGenerica`:

Gostou do exemplo aqui demonstrado? Ele foi retirado do meu livro Guia prático de TypeScript, onde demonstro mais a fundo como se trabalhar com Generics através da construção de um API utilizando TypeScript e Node.js.

Espero que tenham gostado e até um próximo artigo pessoal :)

--

--