Menu
Coddy logo textTech

Estendendo Formatos

Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 41 de 73.

Formatos relacionados frequentemente compartilham campos. Todo Admin também é um User; copiar os campos compartilhados para ambas as declarações facilita que eles divirjam.

Você conheceu o operador de interseção & ao combinar aliases — ele funciona exatamente da mesma forma para formatos. A & B significa "tem tudo de A e tudo de B":

type User = {name: string, age: number}
type Admin = User & {level: number}

-- Admin agora requer: name, age E level
local root: Admin = {name = "Root", age = 35, level = 9}

Onde o TypeScript precisa de uma palavra-chave extends separada para interfaces, o Luau não precisa de nada novo — interseções já fazem o trabalho. Você pode encadear várias partes:

type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}

Não confunda & com |: uma união A | B é qualquer um dos formatos, enquanto uma interseção A & B deve satisfazer ambos ao mesmo tempo. E como Admin possui todos os campos de User, um valor Admin pode ser passado em qualquer lugar onde um User é esperado.

challenge icon

Desafio

Fácil

Crie estes aliases de tipo:

  • Employeeid (number), name (string), department (string)
  • ManagerEmployee estendido (via &) com teamSize (number)
  • Contactemail (string)
  • Developer — a intersecção de Employee, Contact e {yearsExperience: number}

Crie:

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

Crie uma função getManagerSummary que recebe um Manager e retorna [name] manages [teamSize] people.

Imprima, cada um em sua própria linha:

  1. o resultado de getManagerSummary(teamLead)
  2. [name] has [yearsExperience] years of experience para dev
  3. o department de teamLead
  4. o email de dev

Experimente você mesmo

-- Escreva o código aqui
-- 1) defina Employee, depois Manager / Contact / Developer com &
-- 2) crie teamLead e dev
-- 3) escreva getManagerSummary
-- 4) imprima as quatro linhas solicitadas
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao Luau