This commit is contained in:
@@ -4,9 +4,9 @@ import { AbstractTag, Trait, TraitAbstractMembersFn, TraitApplierSuperTag, Trait
|
||||
import { ExtendFn, ExtendableFn, SimplifyFn, StaticMembersFn } from "./util"
|
||||
|
||||
|
||||
class TraitExpression<
|
||||
export class TraitExpression<
|
||||
Super extends AbstractClass<{}>,
|
||||
Traits extends Trait<any, any>[],
|
||||
Traits extends Trait<any, any, any>[],
|
||||
> {
|
||||
constructor(
|
||||
readonly superclass: Super,
|
||||
|
||||
12
src/trait.ts
12
src/trait.ts
@@ -1,6 +1,6 @@
|
||||
import { Fn } from "hotscript"
|
||||
import { AbstractClass, Class, Opaque } from "type-fest"
|
||||
import { AbstractTag } from "."
|
||||
import { AbstractTag, TraitExpression } from "."
|
||||
import { StaticMembers } from "./util"
|
||||
|
||||
|
||||
@@ -28,21 +28,21 @@ type RemoveAbstractFromImpl<
|
||||
|
||||
|
||||
export class Trait<
|
||||
Abstract extends {},
|
||||
Impl extends Class<{}, []>,
|
||||
Supertraits extends Trait<any, any, any>[]
|
||||
Super extends TraitExpression<any, any>[],
|
||||
Abstract extends {},
|
||||
Impl extends Class<{}, []>,
|
||||
> {
|
||||
constructor(
|
||||
readonly supertraits: Supertraits,
|
||||
readonly supertraits: Super,
|
||||
readonly ownAbstract: Abstract,
|
||||
readonly apply: (Super: AbstractClass<{}>) => Impl,
|
||||
) {}
|
||||
}
|
||||
|
||||
export interface Trait<
|
||||
Super extends TraitExpression<any, any>[],
|
||||
Abstract extends {},
|
||||
Impl extends Class<{}, []>,
|
||||
Supertraits extends Trait<any, any, any>[]
|
||||
> {
|
||||
get ownImplClass(): Impl
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user