실세계 모양 모델링하기 위한 schema 조합
allOf — 교집합
인스턴스가 모든 sub-schema 검증해야 함. 상속 같은 조합에 사용: 'Base 이고 + 이 추가 필드 가짐'.
anyOf — 합집합 (최소 하나)
인스턴스가 최소 하나 sub-schema 검증해야 함. 모호/느슨한 합집합에 사용: 'string 또는 number', '여러 옵션 모양 중 하나'.
oneOf — 배타적 합집합 (정확히 하나)
인스턴스가 정확히 하나 sub-schema 검증해야 함. tagged union 에 사용: '신용카드 details 가진 결제 OR 은행이체 details 가진 결제, 둘 다 아님'.
not — 부정
인스턴스가 sub-schema 검증 안 해야 함. 아껴 사용 — not 의 에러 메시지 악명 높게 모호. 가능하면 긍정적으로 표현.
Tagged-union 패턴: 다형 데이터 ('N 변형 중 하나') 는
const 로 검증되는 식별 필드 (kind, type) 가진 oneOf 선호. validator 가 한 변형 매칭 시 명확한 에러 메시지; anyOf 는 사용자가 의도한 변형 모호하게 함.