타입 별칭: Ref<T, Nullable>
type Ref<T, Nullable> = T extends unknown ? RefBranch<T, Nullable> : never;
정의 위치: packages/db/src/query/builder/types.ts:841
Ref - 쿼리 빌더의 사용자용 ref 인터페이스입니다
이는 쿼리의 값에 대한 참조를 나타내는 깔끔한 타입으로, 내부 구현 세부 정보 없이 최적의 IDE 경험을 제공하도록 설계되었습니다. 중첩된 속성 접근을 허용하는 재귀적 인터페이스를 제공하면서 선택 사항 및 null 허용 여부를 올바르게 유지합니다.
Nullable 매개변수는 이 ref가 nullable 조인 측(left/right/full)에서 오는지를 나타냅니다. true인 경우 Nullable 플래그가 모든 중첩 속성 액세스를 통해 전파되어, 이 ref를 통해 액세스하는 모든 필드의 결과 타입에 | undefined이 포함되도록 합니다.
동기화 상태와 행 메타데이터를 쿼리하기 위한 가상 속성($synced, $origin, $key, $collectionId)을 포함합니다.
사용 예:
// Clean interface - no internal properties visible
const users: Ref<{ id: number; profile?: { bio: string } }> = { ... }
users.id // Ref<number> - clean display
users.profile?.bio // Ref<string> - nested optional access works
users.$synced // RefLeaf<boolean> - virtual property access
// Nullable ref (left/right/full join side):
select(({ dept }) => ({ name: dept.name })) // result: string | undefined
// Spread operations work cleanly:
select(({ user }) => ({ ...user })) // Returns User type, not Ref types
타입 매개변수
T
T = any
Nullable
Nullable extends boolean = false