This commit is contained in:
24
src/Trait.ts
24
src/Trait.ts
@@ -1,7 +1,7 @@
|
|||||||
import { Fn } from "hotscript"
|
import { Fn, Pipe, Tuples } from "hotscript"
|
||||||
import { AbstractClass, Class, Opaque } from "type-fest"
|
import { AbstractClass, Class, Opaque } from "type-fest"
|
||||||
import { AbstractTag, TraitExpression, emptyTraitExpression } from "."
|
import { AbstractTag, TraitExpression, emptyTraitExpression } from "."
|
||||||
import { StaticMembers } from "./util"
|
import { ExtendFn, SimplifyFn, StaticMembers } from "./util"
|
||||||
|
|
||||||
|
|
||||||
export type AddAbstractToImplClass<
|
export type AddAbstractToImplClass<
|
||||||
@@ -104,6 +104,26 @@ export namespace Trait {
|
|||||||
export interface SupertraitsFn extends Fn {
|
export interface SupertraitsFn extends Fn {
|
||||||
return: Trait.Supertraits<this["arg0"]>
|
return: Trait.Supertraits<this["arg0"]>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type Class<T> = (
|
||||||
|
AbstractClass<
|
||||||
|
Trait.Instance<T>,
|
||||||
|
any[]
|
||||||
|
> &
|
||||||
|
Pipe<Trait.Supertraits<T>, [
|
||||||
|
Tuples.Map<Trait.OwnAbstractFn>,
|
||||||
|
ExtendFn,
|
||||||
|
SimplifyFn,
|
||||||
|
]>
|
||||||
|
)
|
||||||
|
|
||||||
|
export type Instance<T> = (
|
||||||
|
Pipe<Trait.Supertraits<T>, [
|
||||||
|
Tuples.Map<Trait.OwnInstanceFn>,
|
||||||
|
ExtendFn,
|
||||||
|
SimplifyFn,
|
||||||
|
]>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user