Formas frente a tablas no estructuradas
Parte de la sección Introducción a Luau del Journey de Lua de Coddy — lección 40 de 73.
Ahora tienes dos formas de trabajar con tablas de registros: la forma loose que siempre has usado en Lua, y las formas declaradas. Vale la pena hacer una pausa para ver qué te aporta cada una.
Una tabla loose acepta cualquier cosa. Esa flexibilidad tiene un precio: escribe mal un campo (user.nmae) y obtendrás nil silently; olvida un campo y el error aparecerá muy lejos, en tiempo de ejecución, en cualquier código que toque primero ese hueco:
local user = {name = "Ana", age = 20}
print(user.nmae) -- loose table: silently prints nilDeclara una forma y esos errores pasarán del tiempo de ejecución al tiempo de edición. El comprobador señala el error tipográfico en el momento en que lo escribes, tu editor puede autocompletar nombres de campos y la declaración type sirve además como documentación de lo que contiene la table:
type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ type error: key 'nmae' not found in UserSi vienes de TypeScript, ten en cuenta que Luau no tiene la palabra clave interface — type maneja todas las formas. Tampoco hay "fusión de declaraciones": declarar dos tipos con el mismo nombre en el mismo alcance es un error, por lo que cada forma tiene exactamente una definición.
Las formas de Luau son estructurales: cualquier table con los campos correctos de los tipos correctos coincide, sin importar dónde o cómo se creó. Y las tablas loose siguen teniendo su lugar — los scripts rápidos y los datos verdaderamente dinámicos no necesitan una forma declarada. Sin embargo, para cualquier cosa que se pase entre funciones, una forma detecta los errores mientras aún son baratos de corregir.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
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 Luau4Trabajando con Funciones
Tipado de Parámetros y Valores de RetornoTipado de Funciones AnónimasFunciones que no Retornan NadaParámetros OpcionalesValores por Defecto en ParámetrosFunciones VariádicasDefinición de Tipos de FuncionesRecapitulaciones: Funciones Tipadas2Tipos principales
Tipos básicos: num, str, boolEl tipo 'any': Vía de escapeEl tipo 'unknown'Tipos nulos y opcionalesInferencia de tipos en acciónAnotaciones explícitas de tiposResumen: Práctica de tipos principales5Alias, 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 Maps
Arrays tipadosAñadir y leer elementos¿Qué es un tipo Map?Declarar y acceder a MapsIterar tablasTablas de forma mixtaArrays tipados multidimensionalestable.unpack y VarargsRecapitulaciones: Arrays y Maps6Definición de formas de tablas
Anotaciones de forma en líneaAlias de tipos para formasPropiedades opcionalesFormas frente a tablas no estructuradasExtensión de formasAñadir métodos a las formasEl parámetro 'self' y los métodos con dos puntosRecapitulación: Definición de formas de tablas