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