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
};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
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éricasPratique por conta própria: Compilador de JavaScript online