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