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ãoA 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 stringVocê 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.
Desafio
FácilAceite um valor que seja um número ou uma string.
- Escreva
local function printId(id: number | string): ()que imprimeid. - Declare
local status: string | number = "active". - Chame
printId(7)eprintId("player7"), depois definastatus = 200e 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
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
Tipagem de parâmetros e valores de retornoTipagem de funções anônimasFunções sem retornoParâmetros opcionaisValores padrão dos parâmetrosValores padrão para booleanosFunções variádicasDefinindo tipos de funçãoRecapitulação: funções tipadas2Tipos básicos
Número, string e booleanoO tipo 'any': válvula de escapeO tipo 'unknown'Tipos nulos e opcionaisInferência de tipos na práticaAnotações explícitas de tipoRevisão: prática com tipos básicos5Aliases, 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 MapsPercorrendo TabelasTabelas com Formatos MistosLendo uma GradeConstruindo uma Gradetable.unpackRevisão: Arrays e MapsPratique por conta própria: Compilador de Luau online