Tipos literales
Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 35 de 80.
Tipos como string permiten cualquier cadena, pero a veces solo tienen sentido unos pocos valores exactos. Un tipo literal usa el propio valor como tipo:
local mode: "dark" = "dark" -- solo se permite la cadena "dark"
local locked: true = true -- solo se permite el valor booleano truePor sí solos, los tipos de un solo valor son una curiosidad. Combinados con uniones, se convierten en una de las herramientas más útiles de Luau: un conjunto de valores permitidos estrictamente controlado:
type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"
local move: Direction = "north" -- ✓
local state: GameState = "playing" -- ✓
-- local bad: Direction = "diagonal" -- ✗ ¡error de tipo!Ahora, un error tipográfico como "nort" o un valor no válido como "diagonal" se detecta mientras editas; con una string normal, pasaría inadvertido y provocaría un error en tiempo de ejecución, si tienes la suerte de notarlo.
Los tipos literales distinguen entre mayúsculas y minúsculas, y son exactos: "North" no coincide con "north". Los literales de cadena son el caso más común, pero los literales booleanos y (en las versiones más recientes de Luau) los numéricos funcionan del mismo modo. Este patrón, una unión de literales de cadena, también es la forma en que Luau reemplaza las enumeraciones de otros lenguajes, como verás en un capítulo posterior.
Desafío
FácilPermite solo cuatro nombres exactos de direcciones.
- Escribe
type Direction = "north" | "south" | "east" | "west". - Escribe
local function movePlayer(direction: Direction): stringque devuelva`Moving {direction}`. - Declara
local playerDirection: Direction = "east"e imprimemovePlayer(playerDirection).
Pulsa Ejecutar código: la salida muestra Moving east.
Pruébalo tú mismo
-- 1) type Direction = "north" | "south" | "east" | "west"
-- 2) movePlayer(direction: Direction): string
-- 3) local playerDirection: Direction = "east", luego imprime el movimiento
Todas las lecciones de Introducción a Luau
1Primeros pasos con Luau
¿Qué es Luau?¿Por qué usar Luau?Tu primer código en LuauComprobación de tipos y modos de errorRecapitulacion: Introducción a Luau4Trabajar con funciones
Tipado de parámetros y valores de retornoTipado de funciones anónimasFunciones que no devuelven nadaParámetros opcionalesValores predeterminados de parámetrosValores predeterminados para booleanosFunciones variádicasDefinir tipos de funcionesRepaso: funciones tipadas7Proyecto: Gestor de tareas tipado
Proyecto: La estructura de una tareaFunción para añadir una tarea2Tipos fundamentales
Número, cadena y booleanoEl tipo 'any': una salida de emergenciaEl tipo 'unknown'Tipos nulos y opcionalesLa inferencia de tipos en acciónAnotaciones de tipo explícitasRepaso: práctica de tipos fundamentales5Alias, Uniones e Intersecciones
Alias de tipos para primitivosTipos de uniónTrabajando con tipos de uniónTipos literalesTipos de intersecciónCombinando alias de tiposResumen: Combinaciones avanzadas de tipos3Tablas tipadas: arrays y mapas
Arrays tipadosAgregar y leer elementos¿Qué es un tipo mapa?Declarar y acceder a mapasRecorrer tablasTablas de formas mixtasLeer una cuadrículaConstruir una cuadrículatable.unpackRepaso: arrays y mapasPractica por tu cuenta: Compilador de Luau online