From bb6172381f4620a3554b029a84e9c9ae2ec2966e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 29 Jan 2024 16:59:37 +0100 Subject: [PATCH] Tests --- src/tests.ts | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/tests.ts b/src/tests.ts index 51fd74c..b7b0f5e 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -22,13 +22,31 @@ const Identifiable = () => ( ) ) +const StatefulSubscription = trait<{ + readonly status: ( + { _tag: "awaitingPayment" } | + { _tag: "active", activeSince: Date, expiresAt?: Date } | + { _tag: "expired", expiredSince: Date } + ) +}>()(Super => + class StatefulSubscription extends Super {} +) + +interface ActiveStatefulSubscriptionAbstractMembers extends TraitAbstractMembers { + readonly status: { _tag: "active", activeSince: Date, expiresAt?: Date } +} + +const ActiveStatefulSubscription = trait()(Super => + class ActiveStatefulSubscription extends Super {} +) + // type Test = Simplify>>> type Test1 = [ - TraitAbstractMembers>>, - TraitAbstractMembers>> + TraitAbstractMembers, + TraitAbstractMembers, ] -type Test2 = MergeInheritanceTree +type Test2 = Simplify> const appliedIdentifiable = Identifiable().apply({} as any)