Menu
CoddyTech

셰이프 확장하기

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

관련된 형태는 흔히 필드를 공유합니다. 모든 Admin은 User이기도 합니다. 두 선언에 공통 필드를 복사해 넣으면 두 선언이 서로 달라질 수 있습니다.

별칭을 결합할 때 교집합 연산자 &를 배웠습니다. 형태에도 똑같이 적용됩니다. 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

챌린지

쉬움

직원 형태를 관리자 형태로 확장하세요.

  1. type Employee = {name: string, department: string}와 type Manager = Employee & {teamSize: number}를 작성하세요.
  2. local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}를 만드세요.
  3. `{teamLead.name} manages {teamLead.teamSize} people`를 출력한 다음, teamLead.department를 출력하세요.

코드 실행을 누르세요. 출력에는 Alice Johnson manages 8 people와 Engineering이 표시됩니다.

직접 해보기

-- 1) type Employee를 정의한 다음 type Manager = Employee & {...}를 정의합니다
-- 2) local teamLead: Manager = {...}를 선언합니다
-- 3) 요약 줄을 출력한 다음 부서를 출력합니다

Luau 소개의 모든 레슨

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