Menu
CoddyTech

인터섹션 타입

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

유니온은 값이 한 타입 또는 다른 타입이라고 말합니다. 교차 타입은 반대 방향을 가리킵니다. 앰퍼샌드 &는 테이블 형태들을 결합해 각 부분의 필드를 모두 가진 타입을 만듭니다:

type HasName = { name: string }
type HasAge = { age: number }

type Person = HasName & HasAge

-- Person은 두 필드를 모두 가져야 합니다
local user: Person = {
    name = "Alice",
    age = 25,
}

age를 빼면 검사기가 오류를 보고합니다. 교차 타입은 "그리고"이지, 원하는 것만 고르는 것이 아닙니다. 이를 통해 작고 재사용 가능한 조각들로 큰 형태를 만들 수 있습니다. 서로 다른 관심사에 맞춰 특화된 타입을 정의한 다음, 필요할 때 조합하면 됩니다:

type HasEmail = { email: string }

type Employee = HasName & HasAge & HasEmail

Luau에서 중요한 점 하나: 원시 타입이 아니라 테이블 형태(그리고 함수 타입)를 교차시키세요. number & string 같은 것은 의미가 없습니다. 어떤 값도 동시에 두 타입일 수 없기 때문입니다. "이 형태에 저 형태를 더한 것"을 원할 때 &를 사용하면 됩니다.

물론 런타임에서 Person은 일반적인 Lua 테이블일 뿐입니다. 교차 타입은 검사기에만 존재합니다.

challenge icon

챌린지

쉬움

두 개의 작은 형식을 하나로 결합하세요.

  1. type HasName = {name: string}, type HasAge = {age: number} 및 type Person = HasName & HasAge를 작성하세요.
  2. local user: Person = {name = "Omar", age = 31}을 만드세요.
  3. `Name: {user.name}, Age: {user.age}`를 출력하세요.

코드 실행을 누르세요. 출력에는 Name: Omar, Age: 31가 표시됩니다.

직접 해보기

-- 1) type HasName, type HasAge, type Person = HasName & HasAge
-- 2) local user: Person = {...}
-- 3) 이름과 나이가 있는 줄을 출력

Luau 소개의 모든 레슨

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