0.1.0 #1

Merged
Thilawyn merged 65 commits from next into master 2024-02-06 03:15:40 +01:00
2 changed files with 8 additions and 2 deletions
Showing only changes of commit 754a5dc420 - Show all commits

View File

@@ -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)

View File

@@ -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>