File tree 3 files changed +23
-6
lines changed
3 files changed +23
-6
lines changed Original file line number Diff line number Diff line change @@ -622,3 +622,21 @@ function gh13206() {
622
622
expectType < ChangeStreamInsertDocument < ITest > > ( change ) ;
623
623
} ) ;
624
624
}
625
+
626
+ function gh13529 ( ) {
627
+ interface ResourceDoc {
628
+ foo : string ;
629
+ }
630
+
631
+ type ResourceIdT < ResourceIdField extends string > = {
632
+ [ key in ResourceIdField ] : string ;
633
+ } ;
634
+ type ResourceDocWithId < ResourceIdField extends string > = ResourceDoc & ResourceIdT < ResourceIdField > ;
635
+
636
+ function test <
637
+ ResourceType extends string ,
638
+ DocT extends ResourceDocWithId < `${ResourceType } Id`> > ( dbModel : Model < DocT > ) {
639
+ const resourceDoc = new dbModel ( ) ;
640
+ resourceDoc . foo = 'bar' ;
641
+ }
642
+ }
Original file line number Diff line number Diff line change @@ -141,7 +141,7 @@ declare module 'mongoose' {
141
141
> = IfAny <
142
142
DocType ,
143
143
any ,
144
- Document < unknown , TQueryHelpers , DocType > & MergeType <
144
+ Document < unknown , TQueryHelpers , DocType > & MergeUnlessEmpty <
145
145
Require_id < DocType > ,
146
146
TOverrides extends Record < string , never > ?
147
147
{ } :
Original file line number Diff line number Diff line change @@ -6,13 +6,12 @@ declare module 'mongoose' {
6
6
U :
7
7
T extends ReadonlyArray < infer U > ? U : T ;
8
8
9
+ type MergeType < A , B > = Omit < A , keyof B > & B ;
10
+ type MergeUnlessEmpty < A , B > = keyof B extends never ? A : Omit < A , keyof B > & B ;
11
+
9
12
type UnpackedIntersection < T , U > = T extends null ? null : T extends ( infer A ) [ ]
10
13
? ( Omit < A , keyof U > & U ) [ ]
11
- : keyof U extends never
12
- ? T
13
- : Omit < T , keyof U > & U ;
14
-
15
- type MergeType < A , B > = Omit < A , keyof B > & B ;
14
+ : MergeUnlessEmpty < T , U > ;
16
15
17
16
/**
18
17
* @summary Converts Unions to one record "object".
You can’t perform that action at this time.
0 commit comments