Variáveis de Tipo Genéricas em TypeScript
Para uma melhor compreensão do conceito de genéricos, vamos criar nossa primeira função - função identidade. Essa função retorna exatamente o que foi passado para ela - com o mesmo tipo.
Vamos começar escrevendo as variantes da nossa função separadamente.
Vamos escrever uma função que recebe um número como parâmetro e retorna um número:
function func(data: number): number {
return data;
}
Agora vamos escrever uma função que recebe uma string como parâmetro e retorna uma string:
function func(data: string): string {
return data;
}
Suponha que agora queremos fazer com que tudo isso seja feito por uma única função. Ou seja, nós queremos realizar uma generalização.
Para isso, usamos uma variável de tipo genérica,
que armazena o tipo de dados. Essa variável é declarada
entre colchetes angulares antes dos parênteses
com os parâmetros da função. Vamos declarar
essa variável, dando a ela o nome T
(pode ser qualquer um):
function func <T>(aqui os parâmetros) {
return data;
}
Depois disso, teremos a variável T,
que poderá ser usada para
armazenar o tipo do parâmetro e, em seguida,
especificá-lo como o tipo de retorno.
Vamos especificar o tipo do nosso parâmetro como sendo a nossa variável:
function func <T>(data: T) {
return data;
}
Isso significa que o parâmetro pode ser passado
em qualquer tipo, e esse tipo será armazenado na nossa
variável T.
Agora vamos usar o valor da variável T
para especificar o resultado da função:
function func <T>(data: T): T {
return data;
}
Agora, o tipo de retorno da função será derivado do tipo do parâmetro. Vamos testar.
Vamos chamar a função com um número:
console.log( func(3) ); // exibirá 3
Vamos chamar a função com uma string:
console.log( func('x') ); // exibirá 'x'
Crie uma função que recebe como parâmetro ou dois números, ou duas strings. Como resultado, a função deve retornar a soma dos parâmetros.