Menu
CoddyTech

Tipos de União

Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 33 de 80.

Às vezes, um tipo não é suficiente. Um ID de usuário pode chegar como "user123" ou como 42. Em Lua puro, você simplesmente torceria para dar certo; Luau oferece tipos de união: a barra vertical | é lida como “ou”:

local userId: number | string

userId = "user123"  -- ✓ uma string é permitida
userId = 42          -- ✓ um número é permitido
userId = true        -- ✗ erro de tipo: boolean não faz parte da união

A variável pode conter qualquer um dos membros da união, e somente eles. Essa é a diferença crucial em relação a any: uma união continua sendo rigorosa quanto ao que é permitido, ao mesmo tempo que oferece a flexibilidade de que você precisa.

Uniões são especialmente úteis para parâmetros de funções que aceitam vários 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?. Esse foi o seu primeiro tipo de união! É simplesmente uma forma abreviada de string | nil. Na próxima aula, você vai aprender a trabalhar com segurança com um valor de união depois de obtê-lo.

challenge icon

Desafio

Fácil

Aceite um valor que seja um número ou uma string.

  1. Escreva local function printId(id: number | string): () que imprime id.
  2. Declare local status: string | number = "active".
  3. Chame printId(7) e printId("player7"), depois defina status = 200 e imprima-o.

Pressione Run Code: a saída mostra 7, player7 e 200.

Experimente você mesmo

-- 1) printId(id: number | string): ()
-- 2) local status: string | number = "active"
-- 3) chame printId(7) e printId("player7"), defina status como 200 e imprima-o

Todas as lições de Introdução ao Luau

Pratique por conta própria: Compilador de Luau online