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 a menudo comparten campos. Cada Admin es también un User; copiar los campos compartidos en ambas declaraciones invita a que se dessincronicen.
Conociste el operador de intersección & al combinar alias; funciona exactamente igual para las formas. A & B significa "tiene todo de A y todo 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}Donde TypeScript necesita una palabra clave extends separada para 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 cualquiera de las formas, mientras que una intersección A & B debe satisfacer ambas a la vez. Y dado que Admin tiene todos los campos de User, un valor de tipo Admin se puede pasar 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 (a través de&) conteamSize(number)Contact—email(string)Developer— la intersección deEmployee,Contacty{yearsExperience: number}
Crea:
teamLeadde tipoManager— id101, name"Alice Johnson", department"Engineering", teamSize8devde tipoDeveloper— id102, name"Bob Smith", department"Engineering", email"bob@company.com", yearsExperience5
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 department de
teamLead - el email 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 Maps