Extensión de formas
Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 43 de 80.
Las formas relacionadas suelen compartir campos. Todo Admin también es un User; copiar los campos compartidos en ambas declaraciones puede hacer que diverjan.
Ya conociste el operador de intersección & al combinar alias. Funciona exactamente igual con las formas. A & B significa «tiene todo lo de A y todo lo de B»:
type User = {name: string, age: number}
type Admin = User & {level: number}
-- Admin ahora requiere: name, age Y level
local root: Admin = {name = "Root", age = 35, level = 9}Mientras que TypeScript necesita la palabra clave extends para las interfaces, Luau no necesita nada nuevo: las intersecciones ya hacen el trabajo. Puedes encadenar varias partes:
type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}No confundas & con |: una unión A | B es una forma o la otra, mientras que una intersección A & B debe cumplir ambas a la vez. Y como Admin tiene todos los campos de User, un valor Admin se puede pasar en cualquier lugar donde se espere un User.
Desafío
FácilAmplía la forma de un empleado para crear la forma de un gerente.
- Escribe
type Employee = {name: string, department: string}ytype Manager = Employee & {teamSize: number}. - Crea
local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}. - Imprime
`{teamLead.name} manages {teamLead.teamSize} people`y despuésteamLead.department.
Pulsa Ejecutar código: el resultado muestra Alice Johnson manages 8 people y Engineering.
Pruébalo tú mismo
-- 1) define el tipo Employee y luego el tipo Manager = Employee & {...}
-- 2) declara local teamLead: Manager = {...}
-- 3) imprime la línea de resumen y luego el departamento
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