Working expresses
This commit is contained in:
24
src/trait.ts
24
src/trait.ts
@@ -3,16 +3,16 @@ import { AbstractClass, Class, Opaque } from "type-fest"
|
||||
import { StaticMembers } from "./util"
|
||||
|
||||
|
||||
type AddAbstractMembersToImpl<
|
||||
Impl extends Class<object, []>,
|
||||
AbstractMembers extends object,
|
||||
> = (
|
||||
Class<
|
||||
InstanceType<Impl> & AbstractMembers,
|
||||
ConstructorParameters<Impl>
|
||||
> &
|
||||
StaticMembers<Impl>
|
||||
)
|
||||
// type AddAbstractMembersToImpl<
|
||||
// Impl extends Class<object, []>,
|
||||
// AbstractMembers extends object,
|
||||
// > = (
|
||||
// Class<
|
||||
// InstanceType<Impl> & AbstractMembers,
|
||||
// ConstructorParameters<Impl>
|
||||
// > &
|
||||
// StaticMembers<Impl>
|
||||
// )
|
||||
|
||||
type RemoveAbstractMembersFromImplInstance<
|
||||
ImplInstanceWithAbstractMembers extends AbstractMembers,
|
||||
@@ -21,7 +21,7 @@ type RemoveAbstractMembersFromImplInstance<
|
||||
Omit<ImplInstanceWithAbstractMembers, keyof AbstractMembers>
|
||||
)
|
||||
|
||||
type RemoveAbstractMembersFromImpl<
|
||||
type RemoveAbstractMembersFromImplClass<
|
||||
ImplWithAbstractMembers extends Class<AbstractMembers, []>,
|
||||
AbstractMembers extends object,
|
||||
> = (
|
||||
@@ -63,7 +63,7 @@ export interface TraitAbstractMembersFn extends Fn {
|
||||
|
||||
export type TraitImplClass<T> = (
|
||||
T extends Trait<infer AbstractMembers, infer ImplWithAbstractMembers>
|
||||
? RemoveAbstractMembersFromImpl<
|
||||
? RemoveAbstractMembersFromImplClass<
|
||||
ImplWithAbstractMembers,
|
||||
AbstractMembers
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user