0.1.0 #1
@@ -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)
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user