Tipos de União ('|')
Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy. Lição 31 de 73.
Às vezes, você precisa de uma variável que possa armazenar diferentes tipos de valores dependendo da situação. Por exemplo, um ID de usuário pode ser armazenado como uma string, como "user123", ou como um número, como 42. Os tipos de união do TypeScript resolvem esse problema permitindo que uma variável seja de um entre vários tipos especificados.
Tipos de união usam o caractere pipe (|) para combinar múltiplos tipos. A sintaxe é lida naturalmente como "isto OU aquilo":
let userId: string | number;
userId = "user123"; // Válido - string
userId = 42; // Válido - number
userId = true; // Erro - boolean não permitidoVocê pode combinar quaisquer tipos em uma união, não apenas primitivos. Essa flexibilidade torna os tipos de união particularmente úteis para parâmetros de função que precisam aceitar múltiplos formatos de entrada:
function displayMessage(content: string | number): void {
console.log("Message: " + content);
}
displayMessage("Hello!"); // Funciona com string
displayMessage(404); // Funciona com númeroOs tipos de união fornecem segurança de tipos enquanto mantêm a flexibilidade - o TypeScript garante que você use apenas valores que correspondam a um dos tipos especificados, evitando erros em tempo de execução causados por tipos de dados inesperados.
Desafio
FácilCrie uma função chamada printId que aceite um parâmetro chamado id do tipo string | number e o imprima no console. A função deve ter um tipo de retorno explícito de void.
Crie outra função chamada processValue que aceite um parâmetro chamado data do tipo boolean | string e o retorne inalterado. A função deve ter um tipo de retorno explícito de boolean | string.
Crie uma terceira função chamada formatOutput que aceite um parâmetro chamado input do tipo number | string e retorne uma string formatada. Se a entrada for um número, retorne "Number: [input]". Se a entrada for uma string, retorne "Text: [input]". A função deve ter um tipo de retorno explícito de string.
As seguintes entradas serão fornecidas:
- Primeira entrada: um valor que pode ser uma string ou um número (para
printId) - Segunda entrada: um valor que pode ser um booleano ou uma string (para
processValue) - Terceira entrada: um valor que pode ser um número ou uma string (para
formatOutput)
Leia as três entradas, chame cada função com a entrada apropriada e trate as saídas da seguinte forma:
- Chame
printIdcom a primeira entrada (isso imprimirá diretamente) - Chame
processValuecom a segunda entrada e imprima o valor retornado - Chame
formatOutputcom a terceira entrada e imprima o valor retornado
Nota: A primeira entrada será fornecida como uma string, mas se ela representar um número (como "123"), converta-a para um número antes de passá-la para printId. A segunda entrada será fornecida como uma string, mas se for "true" ou "false", converta-a para o valor booleano correspondente. A terceira entrada será fornecida como uma string, mas se representar um número, converta-a para um número.
Experimente você mesmo
import * as fs from "fs";
// Ler entradas
const stdinBuffer: Buffer = fs.readFileSync(0);
const inputs: string[] = stdinBuffer.toString().trim().split('\n');
const input1 = inputs[0];
const input2 = inputs[1];
const input3 = inputs[2];
// Converter entradas para os tipos apropriados
const firstInput = isNaN(Number(input1)) ? input1 : Number(input1);
const secondInput = input2 === "true" ? true : input2 === "false" ? false : input2;
const thirdInput = isNaN(Number(input3)) ? input3 : Number(input3);
// TODO: Escreva seu código aqui
// Crie as três funções: printId, processValue e formatOutput
// TODO: Chame as funções com as entradas apropriadas e trate as saídasEsta 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 TuplasPratique por conta própria: Playground de TypeScript