@@ -74,6 +74,10 @@ interface SubTestModel {
7474 field1 : string ;
7575 field2 ?: string ;
7676 field3 ?: number ;
77+ nestedObject ?: {
78+ a : string ;
79+ b : string ;
80+ } ;
7781}
7882
7983type FruitTypes = 'apple' | 'pear' ;
@@ -97,6 +101,7 @@ interface TestModel {
97101 subInterfaceField : SubTestModel ;
98102 subInterfaceArray : SubTestModel [ ] ;
99103 timestampField : Timestamp ;
104+ extras : Record < string , { id : string } > ;
100105}
101106const collectionTType = db . collection < TestModel > ( 'test.update' ) ;
102107
@@ -201,9 +206,20 @@ expectAssignable<UpdateFilter<TestModel>>({
201206expectAssignable < UpdateFilter < TestModel > > ( { $set : { doubleField : new Double ( 1.23 ) } } ) ;
202207expectAssignable < UpdateFilter < TestModel > > ( { $set : { int32Field : new Int32 ( 10 ) } } ) ;
203208expectAssignable < UpdateFilter < TestModel > > ( { $set : { longField : Long . fromString ( '999' ) } } ) ;
209+ expectAssignable < UpdateFilter < TestModel > > ( { $set : { extras : { someExtras : { id : 'someId' } } } } ) ;
204210expectAssignable < UpdateFilter < TestModel > > ( { $set : { stringField : 'a' } } ) ;
205211expectError ( buildUpdateFilter ( { $set : { stringField : 123 } } ) ) ;
206212expectAssignable < UpdateFilter < TestModel > > ( { $set : { 'subInterfaceField.field2' : '2' } } ) ;
213+ expectAssignable < UpdateFilter < TestModel > > ( { $set : { 'subInterfaceField.nestedObject.a' : '2' } } ) ;
214+ expectAssignable < UpdateFilter < TestModel > > ( {
215+ $set : { 'subInterfaceField.nestedObject' : { a : '1' , b : '2' } }
216+ } ) ;
217+ expectError < UpdateFilter < TestModel > > ( {
218+ $set : { 'subInterfaceField.nestedObject' : { a : '1' } }
219+ } ) ;
220+ expectError < UpdateFilter < TestModel > > ( {
221+ $set : { 'subInterfaceField.nestedObject' : { a : 1 , b : '2' } }
222+ } ) ;
207223expectError ( buildUpdateFilter ( { $set : { 'subInterfaceField.field2' : 2 } } ) ) ;
208224expectError ( buildUpdateFilter ( { $set : { 'unknown.field' : null } } ) ) ;
209225expectAssignable < UpdateFilter < TestModel > > ( { $set : { 'numberArray.$' : 40 } } ) ;
0 commit comments