From 4656109eefd9a98c789bbe898d5705d87cd8b2ec Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Thu, 6 Oct 2022 16:12:47 -0400 Subject: [PATCH] add a-b-a recursion test --- .../collection/recursive-types.test-d.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) 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' } +});