Pure TS implementation attempt
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-02-17 04:11:17 +01:00
parent 15c5548fde
commit e5e8b7fad7
3 changed files with 61 additions and 13 deletions

View File

@@ -1,7 +1,25 @@
import { TraitClass } from "./Trait"
import { Trait, TraitClass } from "./Trait"
import { trait } from "./TraitBuilder"
import { Implements, ImplementsStatic } from "./TraitExpression"
import { Implements, ImplementsStatic, TraitExpression } from "./TraitExpression"
import { expression } from "./TraitExpressionBuilder"
import { ExtendPlain } from "./util"
type ExtendAbstractSuper<
SuperExpression extends TraitExpression<
typeof TraitExpression.NullSuperclass,
Trait<any, any, any, any>[]
>,
Abstract extends object,
> = (
// ExtendPlain<[
// ...Trait.OwnAbstract<
// TraitExpression.Traits<SuperExpression>[number]
// >,
// Abstract,
// ]>
TraitExpression.Traits<SuperExpression>[number]
)
const PrintsHelloOnNew = trait
@@ -48,7 +66,7 @@ const StatefulSubscription = trait
type StatefulSubscriptionClass = TraitClass<typeof StatefulSubscription>
const ActiveStatefulSubscription = expression
.expresses(StatefulSubscription)
.expresses(PrintsHelloOnNew, StatefulSubscription)
.build()
.subtrait()
.extendAbstract(Super => class extends Super {
@@ -58,6 +76,10 @@ const ActiveStatefulSubscription = expression
.build()
type ActiveStatefulSubscriptionClass = TraitClass<typeof ActiveStatefulSubscription>
type Test = ExtendAbstractSuper<
Trait.OwnSuperExpression<typeof ActiveStatefulSubscription>,
Trait.OwnAbstract<typeof ActiveStatefulSubscription>
>
class TestSuperclass {