SubtraitAbstract
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-02-17 17:12:46 +01:00
parent 2fa71aaf37
commit 04146f6c69
2 changed files with 38 additions and 11 deletions

View File

@@ -2,7 +2,30 @@ import { Fn, Pipe, Tuples } from "hotscript"
import { AbstractClass, Class } from "type-fest"
import { Trait } from "./Trait"
import { TraitBuilder } from "./TraitBuilder"
import { ExtendFn, SimplifyFn, StaticMembersFn } from "./util"
import { ExtendFn, ExtendPlain, SimplifyFn, StaticMembersFn } from "./util"
type SubtraitAbstract<Exp> = (
ExtendPlain<
MapTraitsToOwnAbstract<
TraitExpression.Traits<Exp>
>
>
)
type MapTraitsToOwnAbstract<T extends readonly any[]> = {
[K in keyof T]: Trait.OwnAbstract<T[K]>
}
type SubtraitStaticAbstract<Exp> = (
ExtendPlain<
MapTraitsToOwnStaticAbstract<
TraitExpression.Traits<Exp>
>
>
)
type MapTraitsToOwnStaticAbstract<T extends readonly any[]> = {
[K in keyof T]: Trait.OwnStaticAbstract<T[K]>
}
export class TraitExpression<
@@ -49,8 +72,8 @@ export class TraitExpression<
) {
return new TraitBuilder(
this,
{},
{},
{} as SubtraitAbstract<This>,
{} as SubtraitStaticAbstract<This>,
Super => class extends Super {},
)
}