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

This commit is contained in:
Julien Valverdé
2024-02-19 22:41:20 +01:00
parent df7e7f3401
commit d9213e0083
2 changed files with 25 additions and 13 deletions

View File

@@ -15,11 +15,12 @@ export class TraitExpression<
get extends(): (
AbstractClass<
InstanceType<Superclass> & // Keep the instance of the superclass outside of any kind of type manipulation
// as it can accidentely remove abstract properties
Simplify<
Extend<[
InstanceType<Superclass>,
...TraitTuple.MapImplInstance<Traits>,
]>
Extend<
TraitTuple.MapImplInstance<Traits>
>
>,
ConstructorParameters<Superclass>
@@ -140,11 +141,12 @@ export type TraitExpressionConcreteClass<
export type TraitExpressionInstance<
Exp extends TraitExpression<any, Trait<any, any, any, any>[]>
> = (
InstanceType<TraitExpression.Superclass<Exp>> & // Keep the instance of the superclass outside of any kind of type manipulation
// as it can accidentely remove abstract properties
Simplify<
Extend<[
InstanceType<TraitExpression.Superclass<Exp>>,
...TraitTuple.MapInstance<TraitExpression.Traits<Exp>>,
]>
Extend<
TraitTuple.MapInstance<TraitExpression.Traits<Exp>>
>
>
)

View File

@@ -1,4 +1,4 @@
import { Simplify } from "type-fest"
import { AbstractClass, Simplify } from "type-fest"
import { TraitClass } from "./Trait"
import { trait } from "./TraitBuilder"
import { Implements, ImplementsStatic, TraitExpressionClass } from "./TraitExpression"
@@ -85,7 +85,17 @@ class User extends exp.extends implements Implements<typeof exp> {
console.log(new User())
type T = NonExtendableKeys<[
{ prout: "gneugneu" },
{ prout: string },
]>
abstract class Test {
abstract prout: string
}
const MappedTest = Test as AbstractClass<Test>
class ConcreteTest extends MappedTest {
}
// type T = NonExtendableKeys<[
// { prout: "gneugneu" },
// { prout: string },
// ]>