TraitImplInstance

This commit is contained in:
Julien Valverdé
2024-01-29 02:54:47 +01:00
parent ecbf936f85
commit 754a5dc420
2 changed files with 8 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
import { Simplify } from "type-fest"
import { TraitAbstractMembers, TraitClass, TraitImpl, TraitInstance, expresses, trait } from "."
import { TraitAbstractMembers, TraitClass, TraitImpl, TraitImplInstance, TraitInstance, expresses, trait } from "."
const PrintsHelloOnNew = trait()(Super =>
@@ -22,7 +22,7 @@ const Identifiable = <ID>() => (
)
type Test = Simplify<TraitInstance<ReturnType<typeof Identifiable<bigint>>>>
type Test = Simplify<TraitImplInstance<ReturnType<typeof Identifiable<bigint>>>>
const appliedIdentifiable = Identifiable<bigint>().apply({} as any)

View File

@@ -54,6 +54,12 @@ export type TraitImpl<T> = (
: never
)
export type TraitImplInstance<T> = (
T extends Trait<any, infer Impl>
? InstanceType<Impl>
: never
)
export type TraitClass<T> = (
T extends Trait<infer AbstractMembers, infer Impl>
? AddAbstractMembersToImpl<Impl, AbstractMembers>