Recapitulação: Combinações Avançadas de Tipos
Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy. Lição 36 de 73.
Desafio
FácilCrie um apelido de tipo (type alias) chamado Success para um objeto com uma propriedade status do tipo literal "success" e uma propriedade data do tipo any.
Crie um apelido de tipo chamado Failure para um objeto com uma propriedade status do tipo literal "error" e uma propriedade message do tipo string.
Crie um apelido de tipo chamado Result que seja uma união dos tipos Success e Failure.
Crie uma função chamada processResult que aceite um parâmetro chamado result do tipo Result e retorne uma string. A função deve usar um protetor de tipo (type guard) na propriedade status para determinar o tipo do resultado e se comportar da seguinte forma:
- Se o status for
"success", retorne"Operation successful: [data]" - Se o status for
"error", retorne"Operation failed: [message]"
Crie outra função chamada handleApiResponse que aceite um parâmetro chamado response do tipo Result e retorne um boolean. A função deve retornar true se a operação foi bem-sucedida e false se ela falhou.
As seguintes entradas serão fornecidas:
- Primeira entrada: uma string JSON representando um resultado de sucesso como
{"status": "success", "data": "User created"}ou um resultado de falha como{"status": "error", "message": "Invalid credentials"} - Segunda entrada: outra string JSON no mesmo formato
Analise (parse) ambas as entradas JSON como objetos Result e, em seguida:
- Chame
processResultcom o primeiro resultado analisado e imprima a string retornada - Chame
handleApiResponsecom o primeiro resultado analisado e imprima o booleano retornado - Chame
processResultcom o segundo resultado analisado e imprima a string retornada - Chame
handleApiResponsecom o segundo resultado analisado e imprima o booleano retornado
Experimente você mesmo
import * as readline from 'readline';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const input: string[] = [];
// TODO: Escreva seu código aqui
// 1. Crie aliases de tipo para Success, Failure e Result
// 2. Crie a função processResult
// 3. Crie a função handleApiResponse
rl.on('line', (line: string) => {
input.push(line.trim());
if (input.length === 2) {
// Analisa as entradas JSON
const result1 = JSON.parse(input[0]);
const result2 = JSON.parse(input[1]);
// 4. Chame as funções com os resultados analisados e imprima as saídas
rl.close();
}
});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 TuplasPratique por conta própria: Compilador de JavaScript online