0.1.0 #1
@@ -63,10 +63,12 @@ export class TraitExpression<
|
|||||||
export const emptyTraitExpression = new TraitExpression(TraitExpressionNullSuperclass, [] as const)
|
export const emptyTraitExpression = new TraitExpression(TraitExpressionNullSuperclass, [] as const)
|
||||||
|
|
||||||
interface PrependTraitSupertraitsFn extends Fn {
|
interface PrependTraitSupertraitsFn extends Fn {
|
||||||
return: [
|
return: this["arg0"] extends Trait<any, any, any>
|
||||||
|
? [
|
||||||
...Call<TraitSupertraitsFn, this["arg0"]>,
|
...Call<TraitSupertraitsFn, this["arg0"]>,
|
||||||
this["arg0"],
|
this["arg0"],
|
||||||
]
|
]
|
||||||
|
: never
|
||||||
}
|
}
|
||||||
export interface TraitExpressionTraitsFn extends Fn {
|
export interface TraitExpressionTraitsFn extends Fn {
|
||||||
return: this["arg0"] extends TraitExpression<any, infer Traits>
|
return: this["arg0"] extends TraitExpression<any, infer Traits>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Implements, abstract, expression, trait } from "."
|
import { Call } from "hotscript"
|
||||||
|
import { Implements, TraitExpressionTraitsFn, abstract, expression, trait } from "."
|
||||||
|
|
||||||
|
|
||||||
const PrintsHelloOnNew = trait(
|
const PrintsHelloOnNew = trait(
|
||||||
@@ -54,10 +55,11 @@ const builder = expression
|
|||||||
PrintsHelloOnNew,
|
PrintsHelloOnNew,
|
||||||
Identifiable<bigint>(),
|
Identifiable<bigint>(),
|
||||||
// Identifiable<number>(),
|
// Identifiable<number>(),
|
||||||
|
StatefulSubscription,
|
||||||
)
|
)
|
||||||
|
|
||||||
const exp = builder.get()
|
const exp = builder.get()
|
||||||
type Abs = Implements<typeof exp>
|
type Abs = Call<TraitExpressionTraitsFn, typeof exp>
|
||||||
|
|
||||||
class User extends exp.extends implements Implements<typeof exp> {
|
class User extends exp.extends implements Implements<typeof exp> {
|
||||||
id: bigint = -1n
|
id: bigint = -1n
|
||||||
|
|||||||
Reference in New Issue
Block a user