Menu
CoddyTech

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 permitido

Você 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úmero

Os 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.

challenge icon

Desafio

Fácil

Crie 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 printId com a primeira entrada (isso imprimirá diretamente)
  • Chame processValue com a segunda entrada e imprima o valor retornado
  • Chame formatOutput com 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ídas
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