인터섹션 타입
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 테이블일 뿐입니다. 교차 타입은 검사기에만 존재합니다.
챌린지
쉬움두 개의 작은 형식을 하나로 결합하세요.
type HasName = {name: string},type HasAge = {age: number}및type Person = HasName & HasAge를 작성하세요.local user: Person = {name = "Omar", age = 31}을 만드세요.`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 소개의 모든 레슨
4함수 다루기
매개변수와 반환값의 타입 지정익명 함수의 타입 지정아무것도 반환하지 않는 함수선택적 매개변수기본 매개변수 값불리언 기본값가변 인자 함수함수 타입 정의하기복습: 타입이 지정된 함수직접 연습해 보세요: 온라인 Luau 컴파일러