Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

Crea estos alias de tipo:

  • Employeeid (number), name (string), department (string)
  • ManagerEmployee extendido (a través de &) con teamSize (number)
  • Contactemail (string)
  • Developer — la intersección de Employee, Contact y {yearsExperience: number}

Crea:

  • teamLead de tipo Manager — id 101, name "Alice Johnson", department "Engineering", teamSize 8
  • dev de tipo Developer — id 102, name "Bob Smith", department "Engineering", email "bob@company.com", yearsExperience 5

Crea una función getManagerSummary que reciba un Manager y devuelva [name] manages [teamSize] people.

Imprime, cada uno en su propia línea:

  1. el resultado de getManagerSummary(teamLead)
  2. [name] has [yearsExperience] years of experience para dev
  3. el department de teamLead
  4. 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
quiz iconPonte a prueba

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