Middle
O que são genéricos?
sobes.tech IA
Resposta da IA
Os genéricos em TypeScript permitem criar componentes (funções, classes, interfaces) que podem trabalhar com diferentes tipos de dados, mantendo a segurança de tipos. Eles permitem escrever código mais flexível e reutilizável, sem perder as vantagens da tipagem estática. O exemplo mais simples é o uso de genéricos em funções para retornar o mesmo tipo que foi passado como argumento.
// Função que aceita um argumento de qualquer tipo e o devolve
function identity<T>(arg: T): T {
return arg;
}
// Uso de genérico com um tipo específico - string
let outputString = identity<string>("string"); // O tipo de outputString será string
// Uso de genérico com inferência automática de tipo - number
let outputNumber = identity(123); // O tipo de outputNumber será number
Genéricos também podem ser usados em classes:
// Classe que trabalha com elementos de qualquer tipo
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// Criar uma instância de GenericBox com tipo string
let stringBox = new GenericBox<string>("olá");
// Criar uma instância de GenericBox com tipo boolean
let booleanBox = new GenericBox(true); // TypeScript inferirá o tipo
E em interfaces:
// Interface com genérico
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Uso da interface com tipos específicos
let stringNumberPair: KeyValuePair<string, number> = { key: "idade", value: 30 };
Vantagens do uso de genéricos:
- Reutilização de código: Uma estrutura pode ser usada com diferentes tipos de dados.
- Segurança de tipos: O compilador verifica os tipos durante a compilação, prevenindo erros potenciais.
- Legibilidade e manutenção: O código torna-se mais compreensível, pois fica claro com quais tipos o componente trabalha.
Genéricos são frequentemente usados em bibliotecas e frameworks, como React (para tipar as props de componentes), Redux (para tipar o store), e também ao trabalhar com coleções de dados.