This commit is contained in:
@@ -12,8 +12,10 @@ class TraitExpressionBuilder<
|
||||
constructor(private expression: TraitExpression<Super, OwnTraits, AllTraits>) {}
|
||||
|
||||
extends<
|
||||
NewSuper extends AbstractClass<any>
|
||||
>(superclass: NewSuper) {
|
||||
Super extends AbstractClass<any>
|
||||
>(
|
||||
superclass: Super
|
||||
) {
|
||||
return new TraitExpressionBuilder(
|
||||
new TraitExpression(
|
||||
superclass,
|
||||
@@ -56,12 +58,12 @@ class TraitExpressionBuilder<
|
||||
]) as SpreadSupertraits<Traits>
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.expression as GetTraitExpression<Super, OwnTraits, AllTraits>
|
||||
build() {
|
||||
return this.expression as BuildTraitExpression<Super, OwnTraits, AllTraits>
|
||||
}
|
||||
|
||||
then<V>(fn: (expression: ReturnType<typeof this.get>) => V): V {
|
||||
return fn(this.get())
|
||||
then<V>(fn: (expression: ReturnType<typeof this.build>) => V): V {
|
||||
return fn(this.build())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +112,7 @@ type ImplStaticMembersExtendable<
|
||||
]>
|
||||
)
|
||||
|
||||
type GetTraitExpression<
|
||||
type BuildTraitExpression<
|
||||
Superclass extends AbstractClass<{}>,
|
||||
OwnTraits extends Trait<any, any, any>[],
|
||||
AllTraits extends Trait<any, any, any>[],
|
||||
|
||||
@@ -48,7 +48,7 @@ class TestSuperclass {
|
||||
}
|
||||
|
||||
|
||||
const builder = expression
|
||||
const exp = expression
|
||||
.extends(TestSuperclass)
|
||||
.expresses(
|
||||
PrintsHelloOnNew,
|
||||
@@ -56,8 +56,8 @@ const builder = expression
|
||||
// Identifiable<number>(),
|
||||
StatefulSubscription,
|
||||
)
|
||||
.build()
|
||||
|
||||
const exp = builder.get()
|
||||
type Abs = Implements<typeof exp>
|
||||
|
||||
// exp.subtrait(
|
||||
|
||||
Reference in New Issue
Block a user