From a9ff3f1db398d2b0ba2b05f4f02afaffea751435 Mon Sep 17 00:00:00 2001 From: Valeri Karpov Date: Sun, 11 Aug 2024 15:19:50 -0400 Subject: [PATCH] types: make HydratedSingleSubdocument and HydratedArraySubdocument merge types instead of using & Fix #14793 --- types/index.d.ts | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/types/index.d.ts b/types/index.d.ts index bbaa4f66901..02c975a4eb3 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -157,8 +157,37 @@ declare module 'mongoose' { > > >; - export type HydratedSingleSubdocument = Types.Subdocument, DocType> & Require_id & TOverrides; - export type HydratedArraySubdocument = Types.ArraySubdocument, DocType> & Require_id & TOverrides; + export type HydratedSingleSubdocument< + DocType, + TOverrides = {} + > = IfAny< + DocType, + any, + TOverrides extends Record ? + Types.Subdocument, DocType> & Require_id : + IfAny< + TOverrides, + Types.Subdocument, DocType> & Require_id, + Types.Subdocument, DocType> & MergeType< + Require_id, + TOverrides + > + > + >; + export type HydratedArraySubdocument = IfAny< + DocType, + any, + TOverrides extends Record ? + Types.ArraySubdocument, DocType> & Require_id : + IfAny< + TOverrides, + Types.ArraySubdocument, DocType> & Require_id, + Types.ArraySubdocument, DocType> & MergeType< + Require_id, + TOverrides + > + > + >; export type HydratedDocumentFromSchema = HydratedDocument< InferSchemaType,