diff --git a/test/types/community/collection/recursive-types.test-d.ts b/test/types/community/collection/recursive-types.test-d.ts index 6b5be685c6..c9ecae1462 100644 --- a/test/types/community/collection/recursive-types.test-d.ts +++ b/test/types/community/collection/recursive-types.test-d.ts @@ -228,3 +228,37 @@ recursiveSchemaWithArray.findOne({ name: 3 } }); + +// Modeling A -> B -> C -> D -> A recursive type +type A = { + name: string; + b: B; +}; + +type B = { + name: string; + c: C; +}; + +type C = { + name: string; + d: D; +}; + +type D = { + name: string; + a: A; +}; + +expectAssignable>({ + 'b.c.d.a.b.c.d.a.b.name': 'a' +}); + +expectNotAssignable>({ + 'b.c.d.a.b.c.d.a.b.name': 2 +}); + +// why does this blow up +expectAssignable>({ + $set: { 'b.c.d.a.b.c.d.a.b.c.name': 'a' } +});