0.1.0 #1
@@ -1,5 +1,5 @@
|
|||||||
import { Simplify } from "type-fest"
|
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 =>
|
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)
|
const appliedIdentifiable = Identifiable<bigint>().apply({} as any)
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,12 @@ export type TraitImpl<T> = (
|
|||||||
: never
|
: never
|
||||||
)
|
)
|
||||||
|
|
||||||
|
export type TraitImplInstance<T> = (
|
||||||
|
T extends Trait<any, infer Impl>
|
||||||
|
? InstanceType<Impl>
|
||||||
|
: never
|
||||||
|
)
|
||||||
|
|
||||||
export type TraitClass<T> = (
|
export type TraitClass<T> = (
|
||||||
T extends Trait<infer AbstractMembers, infer Impl>
|
T extends Trait<infer AbstractMembers, infer Impl>
|
||||||
? AddAbstractMembersToImpl<Impl, AbstractMembers>
|
? AddAbstractMembersToImpl<Impl, AbstractMembers>
|
||||||
|
|||||||
Reference in New Issue
Block a user