Interfaces Genéricas
Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy — lição 61 de 73.
Assim como você pode criar funções genéricas, você também pode criar interfaces genéricas. Isso permite que você defina a forma de um objeto enquanto mantém certos tipos de propriedades flexíveis e reutilizáveis.
Veja como criar uma interface genérica usando a mesma sintaxe de parâmetro de tipo:
interface Container {
value: T;
isEmpty: boolean;
}O <T> após o nome da interface cria um parâmetro de tipo que pode ser usado em toda a definição da interface. Neste exemplo, a propriedade value terá qualquer tipo que você especificar ao usar a interface, enquanto isEmpty permanece como um tipo boolean fixo.
Quando você usa uma interface genérica, você especifica o tipo concreto entre colchetes angulares:
const stringContainer: Container = {
value: "hello",
isEmpty: false
};
const numberContainer: Container = {
value: 42,
isEmpty: false
};Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilCrie uma interface genérica chamada Result que possa conter dados de qualquer tipo junto com informações de sucesso.
A interface deve ter duas propriedades:
successdo tipobooleandatado tipoT(o parâmetro de tipo genérico)
Crie os seguintes objetos usando sua interface genérica:
stringResultdo tipoResult<string>comsuccess: trueedata: "Operation completed"numberResultdo tipoResult<number>comsuccess: trueedata: 42booleanResultdo tipoResult<boolean>comsuccess: falseedata: falsearrayResultdo tipoResult<string[]>comsuccess: trueedata: ["item1", "item2", "item3"]
Crie uma função genérica chamada processResult que:
- Use um parâmetro de tipo genérico
T - Receba um parâmetro
resultdo tipoResult<T> - Retorne uma mensagem do tipo string
- Se
successfortrue, retorne"Success: [data]" - Se
successforfalse, retorne"Failed: [data]"
Imprima as seguintes saídas:
- Imprima o resultado da chamada de
processResultcomstringResult - Imprima o resultado da chamada de
processResultcomnumberResult - Imprima o resultado da chamada de
processResultcombooleanResult - Imprima o resultado da chamada de
processResultcomarrayResult - Imprima
stringResult.data
Folha de consulta
Interfaces genéricas permitem que você defina a forma de um objeto enquanto mantém certos tipos de propriedades flexíveis e reutilizáveis.
Crie uma interface genérica usando a sintaxe de parâmetro de tipo:
interface Container<T> {
value: T;
isEmpty: boolean;
}O <T> após o nome da interface cria um parâmetro de tipo que pode ser usado em toda a definição da interface.
Use uma interface genérica especificando o tipo concreto entre colchetes angulares:
const stringContainer: Container<string> = {
value: "hello",
isEmpty: false
};
const numberContainer: Container<number> = {
value: 42,
isEmpty: false
};Experimente você mesmo
// TODO: Escreva seu código aqui
// Crie a interface Result genérica
// Crie os objetos usando a interface Result
// Crie a função processResult genérica
// Imprima as saídas necessáriasEsta 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
1Primeiros Passos com TS
O que é TypeScript?Por que usar TypeScript?Seu Primeiro Código TypeScriptProcesso de Compilação e ErrosRecapitulação: Introdução ao TS4Trabalhando com Funções
Tipagem de Parâmetros e RetornosTipagem de Arrow FunctionsO Tipo de Retorno 'void'Parâmetros Opcionais com '?'Valores Padrão de ParâmetrosTipagem de Rest ParametersDefinindo Tipos de FunçõesRecapitulação: Criando Funções Tipadas2Tipos Principais
Tipos Básicos: str, num, booleanO Tipo 'any': Válvula de EscapeO Tipo 'unknown'Trabalhando com 'null' e 'undef'Inferência de Tipo na PráticaAnotações de Tipo ExplícitasRecapitulação: Prática de Tipos Principais5Tipos: Aliases, Uniões e Interseções
Aliases de Tipos para PrimitivosTipos de União ('|')Trabalhando com Tipos de UniãoTipos LiteraisTipos de Interseção ('&')Combinando Aliases de TiposRecapitulação: Combinações Avançadas de Tipos3Estrutura de Dados: Arrays e Tuplas
Arrays TipadosModificador 'readonly' para ArraysO que é uma Tupla?Declarando e Acessando TuplasDesestruturando TuplasTuplas ReadonlyArrays Tipados MultidimensionaisSpread Operator com ArraysRecapitulação: Arrays e Tuplas6Tipagem de Objetos e Interfaces
Anotações de Tipo de Objeto InlineType Aliases para ObjetosIntrodução a InterfacesInterfaces vs. Type AliasesProps Opcionais e ReadonlyEstendendo Interfaces e TiposAdicionando Métodos a InterfacesRecapitulação: Definindo Formatos de Objetos9Generics: Uma Primeira Olhada
O Problema que Generics ResolvemCriando uma Função de Identidade GenéricaUsando uma Função GenéricaArrays GenéricosInterfaces GenéricasRecapitulação: Prática de Funções Genéricas