Menu
CoddyTech

Usando uma Função Genérica

Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy. Lição 59 de 73.

Há duas maneiras de usar uma função genérica: com argumentos de tipo explícitos ou deixando o TypeScript inferir o tipo automaticamente.

Veja como você pode chamar uma função genérica com argumentos de tipo explícitos:

const result1 = wrapInObject<string>("hello");
const result2 = wrapInObject<number>(42);

<string> e <number> informam explicitamente ao TypeScript qual tipo usar para T. Isso oferece controle total sobre o parâmetro de tipo.

No entanto, o TypeScript é inteligente o suficiente para inferir o tipo a partir do argumento que você passa na maioria dos casos:

const result1 = wrapInObject("hello");  // T inferred as string
const result2 = wrapInObject(42);       // T inferred as number

A inferência de tipos torna seu código mais limpo e legível, mantendo a mesma segurança de tipos. O TypeScript analisa o argumento e determina automaticamente qual deve ser o T, portanto, você não precisa escrever a anotação de tipo explícita, a menos que queira substituir o tipo inferido.

challenge icon

Desafio

Fácil

Você recebe o seguinte do desafio anterior:

  • A função genérica wrapInObject<T> que recebe um item do tipo T e retorna { value: T }

Chame a função wrapInObject usando tanto argumentos de tipo explícitos quanto inferência de tipo:

Usando argumentos de tipo explícitos:

  • Crie uma variável explicitString chamando wrapInObject<string> com "TypeScript"
  • Crie uma variável explicitNumber chamando wrapInObject<number> com 25
  • Crie uma variável explicitBoolean chamando wrapInObject<boolean> com false

Usando inferência de tipo:

  • Crie uma variável inferredString chamando wrapInObject com "Generics" (deixe o TypeScript inferir o tipo)
  • Crie uma variável inferredNumber chamando wrapInObject com 99 (deixe o TypeScript inferir o tipo)
  • Crie uma variável inferredBoolean chamando wrapInObject com true (deixe o TypeScript inferir o tipo)

Imprima as seguintes saídas:

  • Imprima explicitString.value
  • Imprima explicitNumber.value
  • Imprima explicitBoolean.value
  • Imprima inferredString.value
  • Imprima inferredNumber.value
  • Imprima inferredBoolean.value

Experimente você mesmo

// Função genérica do desafio anterior
function wrapInObject<T>(item: T): { value: T } {
    return { value: item };
}

// TODO: Escreva seu código aqui
// Crie variáveis usando argumentos de tipo explícitos
// Crie variáveis usando inferência de tipos

// Imprima os resultados
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao TypeScript

Pratique por conta própria: Playground de TypeScript