Aula 2

TypeScript

Operadores Condicionais e ENUM

Operadores Condicionais

if

Usado para verificar uma condição. Se for verdadeira, executa o bloco.

let idade: number = 18;

if (idade >= 18) {
  console.log("Você é maior de idade.");
}

if...else

Executa um bloco se a condição for verdadeira e outro se for falsa.

let estaChovendo: boolean = false;

if (estaChovendo) {
  console.log("Leve um guarda-chuva.");
} else {
  console.log("O tempo está bom.");
}

if...else if...else

Permite múltiplas condições encadeadas.

let nota: number = 75;

if (nota >= 90) {
  console.log("Aprovado com louvor");
} else if (nota >= 60) {
  console.log("Aprovado");
} else {
  console.log("Reprovado");
}

switch

Usado para várias comparações com valores fixos.

let diaSemana: number = 3;

switch (diaSemana) {
  case 1:
    console.log("Domingo");
    break;
  case 2:
    console.log("Segunda-feira");
    break;
  case 3:
    console.log("Terça-feira");
    break;
  default:
    console.log("Dia inválido");
}

O que é enum em TypeScript?

enum (abreviação de enumeration) é uma funcionalidade do TypeScript que permite declarar um conjunto de constantes nomeadas. Ele facilita o trabalho com conjuntos fixos de valores, como dias da semana, estados de um processo, cores, etc.

Por que usar enum?

Exemplo 1: Dias da Semana


enum DiaDaSemana {
  Domingo,
  Segunda,
  Terca,
  Quarta,
  Quinta,
  Sexta,
  Sabado
}

const hoje: DiaDaSemana = DiaDaSemana.Quarta;

console.log(hoje); // 3
console.log(DiaDaSemana[hoje]); // "Quarta"
  

Nesse exemplo, o enum atribui valores numéricos automaticamente a partir de 0.

Exemplo 2: Estados de um Pedido


enum StatusPedido {
  Pendente = "PENDENTE",
  Processando = "PROCESSANDO",
  Concluido = "CONCLUIDO",
  Cancelado = "CANCELADO"
}

function atualizarStatus(status: StatusPedido) {
  console.log(`Status do pedido: ${status}`);
}

atualizarStatus(StatusPedido.Concluido); // Status do pedido: CONCLUIDO
  

Neste caso, utilizamos enum com valores string para tornar os logs mais legíveis.

Exemplo 3: Níveis de Acesso


enum NivelAcesso {
  Usuario = 1,
  Moderador = 2,
  Administrador = 3
}

function temPermissao(nivel: NivelAcesso): boolean {
  return nivel >= NivelAcesso.Moderador;
}

console.log(temPermissao(NivelAcesso.Usuario)); // false
console.log(temPermissao(NivelAcesso.Administrador)); // true
  

Esse exemplo mostra como usar enums com valores numéricos personalizados para controle de acesso.

Exemplo 4: Usando enum em um switch


enum CorSemaforo {
  Verde,
  Amarelo,
  Vermelho
}

function acaoSemaforo(cor: CorSemaforo): void {
  switch (cor) {
    case CorSemaforo.Verde:
      console.log("Siga");
      break;
    case CorSemaforo.Amarelo:
      console.log("Atenção");
      break;
    case CorSemaforo.Vermelho:
      console.log("Pare");
      break;
    default:
      console.log("Cor inválida");
  }
}

acaoSemaforo(CorSemaforo.Amarelo); // Atenção
  

Exemplo 5: Usando enum de string


enum TipoUsuario {
  Admin = "ADMIN",
  Editor = "EDITOR",
  Leitor = "LEITOR"
}

function mostrarPermissoes(tipo: TipoUsuario) {
  switch (tipo) {
    case TipoUsuario.Admin:
      console.log("Acesso total");
      break;
    case TipoUsuario.Editor:
      console.log("Pode editar conteúdo");
      break;
    case TipoUsuario.Leitor:
      console.log("Apenas leitura");
      break;
  }
}

mostrarPermissoes(TipoUsuario.Editor); // Pode editar conteúdo
  

Dica: Sempre use Enum.Valor nos case do switch. O TypeScript compila isso corretamente e mantém o tipo seguro.