This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { Fn } from "hotscript"
|
||||
import { AbstractClass, Class, Opaque } from "type-fest"
|
||||
import { AbstractTag, TraitExpression, TraitExpressionNullSuperclass, emptyTraitExpression } from "."
|
||||
import { AbstractTag, TraitExpression, emptyTraitExpression } from "."
|
||||
import { StaticMembers } from "./util"
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ type RemoveAbstractFromImplClass<
|
||||
|
||||
|
||||
export class Trait<
|
||||
Supertraits extends TraitExpression<typeof TraitExpressionNullSuperclass, Trait<any, any, any>[], Trait<any, any, any>[]>,
|
||||
Supertraits extends TraitExpression<typeof TraitExpression.NullSuperclass, Trait<any, any, any>[], Trait<any, any, any>[]>,
|
||||
Abstract extends {},
|
||||
ImplClass extends Class<{}, []>,
|
||||
> {
|
||||
|
||||
@@ -4,8 +4,6 @@ import { AbstractTag, Trait, TraitApplierSuperTag } from "."
|
||||
import { ExtendFn, SimplifyFn, StaticMembersFn } from "./util"
|
||||
|
||||
|
||||
export class TraitExpressionNullSuperclass {}
|
||||
|
||||
export class TraitExpression<
|
||||
Superclass extends AbstractClass<{}>,
|
||||
OwnTraits extends Trait<any, any, any>[],
|
||||
@@ -62,6 +60,8 @@ export class TraitExpression<
|
||||
}
|
||||
|
||||
export namespace TraitExpression {
|
||||
export class NullSuperclass {}
|
||||
|
||||
export type Superclass<T> = (
|
||||
T extends TraitExpression<infer Superclass, any, any>
|
||||
? Superclass
|
||||
@@ -103,7 +103,7 @@ export type Implements<Exp extends TraitExpression<any, any, any>> = (
|
||||
|
||||
|
||||
export const emptyTraitExpression = new TraitExpression(
|
||||
TraitExpressionNullSuperclass,
|
||||
TraitExpression.NullSuperclass,
|
||||
[] as const,
|
||||
[] as const,
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Implements, Trait, TraitExpression, abstract, expression, trait } from "."
|
||||
import { Implements, TraitExpression, abstract, expression, trait } from "."
|
||||
|
||||
|
||||
const PrintsHelloOnNew = trait(
|
||||
|
||||
Reference in New Issue
Block a user