Menu
Coddy logo textTech

Tipos de União

Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 31 de 73.

Às vezes, apenas um tipo não é suficiente. Um ID de usuário pode chegar como "user123" ou como 42. No Lua puro você apenas torceria pelo melhor; o Luau oferece **tipos de união** — o pipe | lê-se como "ou":

local userId: number | string

userId = "user123"  -- ✓ uma string é permitida
userId = 42          -- ✓ um number é permitido
userId = true        -- ✗ erro de tipo: boolean não está na união

A variável pode conter qualquer um dos membros da união — e apenas esses. Essa é a diferença crucial em relação a any: uma união permanece estrita sobre o que é permitido, ao mesmo tempo em que oferece a flexibilidade necessária.

As uniões são especialmente úteis para parâmetros de funções que aceitam múltiplos formatos de entrada:

function printId(id: number | string): ()
    print(id)
end

printId(42)          -- funciona com um número
printId("user123")   -- funciona com uma string

Você já conhece string? — essa foi a sua primeira união! É simplesmente um atalho para string | nil. Na próxima lição, você aprenderá como trabalhar com segurança com um valor de união depois de ter um.

challenge icon

Desafio

Fácil

Crie uma função chamada printId que recebe id: number | string e o imprime — tipo de retorno explícito ().

Declare uma variável status do tipo string | number, inicializada como "active".

Em seguida, na ordem:

  1. Chame printId(42)
  2. Chame printId("user123")
  3. Imprima status
  4. Reatribua status para 200 e imprima-o novamente

Quatro linhas de saída no total.

Experimente você mesmo

-- Escreva o código aqui
-- printId(id: number | string): ()
-- local status: string | number = "active"
-- chame printId(42), printId("user123"),
-- imprima status, reatribua para 200, imprima novamente
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 Luau