Menu
Coddy logo textTech

셰이프 확장하기

Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 41번째.

서로 관련된 셰이프는 필드를 공유하는 경우가 많습니다. 모든 AdminUser이기도 하므로, 공유 필드를 두 선언에 복사해 넣으면 서로 달라지기 쉽습니다.

별칭을 결합할 때 교집합 연산자 &를 배웠습니다. 셰이프에서도 정확히 같은 방식으로 작동합니다. A & B는 "A의 모든 것과 그리고 B의 모든 것을 가짐"을 의미합니다.

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

-- Admin은 이제 name, age 및 level이 필요합니다
local root: Admin = {name = "Root", age = 35, level = 9}

TypeScript에서는 인터페이스에 별도의 extends 키워드가 필요하지만, Luau에서는 새로운 것이 필요하지 않습니다. 교집합이 이미 그 역할을 합니다. 여러 부분을 연결할 수도 있습니다.

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

&|를 혼동하지 마세요. 유니언 A | B는 두 셰이프 중 하나인 반면, 교집합 A & B는 한 번에 둘 다 만족해야 합니다. 또한 Admin은 모든 User 필드를 가지므로, Admin 값은 User가 필요한 모든 곳에 전달할 수 있습니다.

challenge icon

챌린지

쉬움

다음 타입 별칭을 만드세요:

  • Employee: id (number), name (string), department (string)
  • Manager: EmployeeteamSize (number)와 함께 확장 ( & 사용)
  • Contact: email (string)
  • Developer: Employee, Contact{yearsExperience: number}의 교집합

다음을 만드세요:

  • Manager 타입의 teamLead: id 101, name "Alice Johnson", department "Engineering", teamSize 8
  • Developer 타입의 dev: id 102, name "Bob Smith", department "Engineering", email "bob@company.com", yearsExperience 5

Manager를 인수로 받고 [name] manages [teamSize] people을 반환하는 getManagerSummary 함수를 만드세요.

각 결과를 한 줄씩 출력하세요:

  1. getManagerSummary(teamLead)의 결과
  2. dev에 대한 [name] has [yearsExperience] years of experience
  3. teamLead의 department
  4. dev의 email

직접 해보기

-- 여기에 코드를 작성하세요
-- 1) Employee를 정의한 다음, Manager / Contact / Developer를 &와 함께
-- 2) teamLead와 dev를 생성하세요
-- 3) getManagerSummary를 작성하세요
-- 4) 요청된 네 줄을 출력하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Luau 소개의 모든 레슨

직접 연습해 보세요: 온라인 Lua 컴파일러