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. Em Lua pura você apenas torceria pelo melhor; o Luau oferece tipos union — o caractere de 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ãoA variável pode conter qualquer membro da union — e apenas esses. Essa é a diferença crucial em relação a any: uma union permanece rígida sobre o que é permitido, ao mesmo tempo que oferece a flexibilidade necessária.
Unions são especialmente úteis para parâmetros de função 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 stringVocê já conhece string? — essa foi sua primeira union! É simplesmente um atalho para string | nil. Na próxima lição, você aprenderá como trabalhar com segurança com um valor de union assim que tiver um.
Desafio
FácilCrie uma função chamada printId que aceite id: number | string e o imprima — tipo de retorno explícito ().
Declare uma variável status do tipo string | number, inicializada como "<code>active".
Em seguida, na ordem:
- Chame
printId(42) - Chame
printId("<code>user123") - Imprima
status - Reatribua
statuspara200e 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 = o texto exato das instruções
-- chame printId(42), printId(o texto exato das instruções),
-- imprima status, reatribua para 200, imprima novamente
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
1Começando com o Luau
O que é Luau?Por que usar Luau?Seu primeiro código em LuauVerificação de tipos e modos de erroRecapitulando: Introdução ao Luau4Trabalhando com Funções
Tipando Parâmetros e Valores de RetornoTipando Funções AnônimasFunções que Não Retornam NadaParâmetros OpcionaisValores Padrão para ParâmetrosFunções VariádicasDefinindo Tipos de FunçõesRecapitulação: Funções Tipadas2Tipos Fundamentais
Tipos Básicos: num, str, boolO Tipo 'any': Escape HatchO Tipo 'unknown'Tipos Nil e OpcionaisInferência de Tipos na PráticaAnotações Explícitas de TiposReciclagem: Prática de Tipos Fundamentais5Aliases, Uniões, Interseções
Aliases de Tipos para PrimitivosTipos de UniãoTrabalhando com Tipos de UniãoTipos LiteraisTipos de InterseçãoCombinando Aliases de TiposRecapitulando: Combinações Avançadas de Tipos3Tabelas Tipadas: Arrays e Maps
Arrays TipadosAdicionando e Lendo ElementosO que é um Tipo Map?Declarando e Acessando MapsIterando Sobre TabelasTabelas de Formato MistoArrays Tipados Multidimensionaistable.unpack e VarargsRecapitulando: Arrays e MapsPratique por conta própria: Compilador de Lua online