Tipos Literais
Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 35 de 80.
Tipos como string permitem qualquer string, mas às vezes apenas alguns valores exatos fazem sentido. Um tipo literal usa o próprio valor como tipo:
local mode: "dark" = "dark" -- apenas a string "dark" é permitida
local locked: true = true -- apenas o booleano true é permitidoPor si só, tipos de valor único são uma curiosidade. Combinados com uniões, eles se tornam uma das ferramentas mais úteis do Luau: um conjunto estritamente controlado de valores permitidos:
type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"
local move: Direction = "north" -- ✓
local state: GameState = "playing" -- ✓
-- local bad: Direction = "diagonal" -- ✗ erro de tipo!Agora, um erro de digitação como "nort" ou um valor inválido como "diagonal" é detectado enquanto você edita; com uma string simples, ele passaria despercebido e causaria uma falha em tempo de execução, se você tiver sorte o bastante para percebê-la.
Tipos literais diferenciam maiúsculas de minúsculas e são exatos: "North" não corresponde a "north". Literais de string são o caso mais comum, mas literais booleanos e, nas versões mais recentes do Luau, numéricos funcionam da mesma forma. Esse padrão, uma união de literais de string, também é como o Luau substitui os enums de outras linguagens, como você verá em um capítulo posterior.
Desafio
FácilPermita apenas quatro nomes exatos de direção.
- Escreva
type Direction = "north" | "south" | "east" | "west". - Escreva
local function movePlayer(direction: Direction): stringretornando`Moving {direction}`. - Declare
local playerDirection: Direction = "east"e imprimamovePlayer(playerDirection).
Pressione Executar código: a saída mostra Moving east.
Experimente você mesmo
-- 1) type Direction = "north" | "south" | "east" | "west"
-- 2) movePlayer(direction: Direction): string
-- 3) local playerDirection: Direction = "east", depois imprima o movimento
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