타입 별칭: TransactionWithMutations<T, TOperation>
type TransactionWithMutations<T, TOperation> = Omit<Transaction<T>, "mutations"> & object;
정의 위치: packages/db/src/types.ts:148
하나 이상의 뮤테이션이 있는 Transaction을 위한 유틸리티 타입입니다. Transaction.commit 메서드에서 내부적으로 사용됩니다.
타입 선언
mutations
mutations: NonEmptyArray<PendingMutation<T, TOperation>>;
교차하기 전에 mutations 속성을 Transaction<T>에서 제거해야 합니다. 교차 타입의 양쪽에 동일한 속성이 나타나면 TypeScript가 해당 속성 타입을 교차하기 때문입니다.
Omit이 없으면:
Transaction<T>에는mutations: Array<PendingMutation<T>>이 있습니다- 교차 타입은 다음을 생성합니다:
Array<PendingMutation<T>> & NonEmptyArray<PendingMutation<T, TOperation>> - 이 배열을 매핑할 때 TypeScript는
TOperation을 특정 리터럴에서 확장합니다 (예:"delete")에서 합집합OperationType("insert" | "update" | "delete")으로 확장합니다 - 이로 인해
PendingMutation<T, OperationType>이 조건부 타입을 평가합니다original: TOperation extends 'insert' ? {} : T을{} | T으로 평가하며, 단순한T으로 평가하지 않습니다
Omit을 사용하면:
mutations을Transaction<T>에서 먼저 제거합니다- 그런 다음
mutations: NonEmptyArray<PendingMutation<T, TOperation>>을 다시 추가합니다 - TypeScript는
TOperation을 특정 리터럴 타입으로 올바르게 좁힐 수 있습니다 - 매핑할 때
mutation.original이T로 올바르게 타입 지정되고{} | T로는 지정되지 않도록 합니다
타입 매개변수
T
T는 object을 확장합니다 = Record<string, unknown>
TOperation
TOperation는 OperationType을 확장합니다 = OperationType