Extensión de formas
Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 41 de 73.
Las formas relacionadas suelen compartir campos. Todo Admin también es un User; copiar los campos compartidos en ambas declaraciones puede hacer que se separen.
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 una palabra clave extends separada 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 u otra, mientras que una intersección A & B debe satisfacer ambas a la vez. Y como Admin tiene todos los campos de User, un valor Admin puede pasarse a cualquier lugar donde se espere un User.
Desafío
FácilCrea estos alias de tipo:
Employee:id(number),name(string),department(string)Manager:Employeeextendido (mediante&) conteamSize(number)Contact:email(string)Developer: la intersección deEmployee,Contacty{yearsExperience: number}
Crea:
teamLeadde tipoManager: id101, nombre"Alice Johnson", departamento"Engineering", tamaño del equipo8devde tipoDeveloper: id102, nombre"Bob Smith", departamento"Engineering", correo electrónico"bob@company.com", años de experiencia5
Crea una función getManagerSummary que reciba un Manager y devuelva [name] manages [teamSize] people.
Imprime, cada uno en su propia línea:
- el resultado de
getManagerSummary(teamLead) [name] has [yearsExperience] years of experienceparadev- el departamento de
teamLead - el correo electrónico de
dev
Pruébalo tú mismo
-- Escribe código aquí
-- 1) define Employee, luego Manager / Contact / Developer con &
-- 2) crea teamLead y dev
-- 3) escribe getManagerSummary
-- 4) imprime las cuatro líneas solicitadas
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 MapsPractica por tu cuenta: Compilador de Lua online