From 20554ec55a8b778218277a95cc9c7dacedbbb9d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 18 Feb 2024 21:44:19 +0100 Subject: [PATCH] Trait work --- src/Trait.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Trait.ts b/src/Trait.ts index 16988cd..e8f5cfd 100644 --- a/src/Trait.ts +++ b/src/Trait.ts @@ -1,7 +1,7 @@ import { Fn } from "hotscript" import { AbstractClass, Class, Simplify } from "type-fest" import { TraitExpression } from "./TraitExpression" -import { Extend, StaticMembers } from "./util" +import { Extend, ExtendPlain, StaticMembers } from "./util" export class Trait< @@ -96,16 +96,18 @@ export namespace Trait { } export namespace Traits { - export type MapImplClass = { + export type MapImplClass = { [K in keyof T]: Trait.OwnImplClass } - export type MapImplInstance = { + export type MapImplInstance = { [K in keyof T]: Trait.OwnImplInstance } - export type MapImplStaticMembers = { - [K in keyof T]: Trait.OwnImplStaticMembers + export type MapImplStaticMembers = { + [K in keyof T]: K extends keyof [] + ? T[K] + : Trait.OwnImplStaticMembers } } @@ -122,7 +124,7 @@ export type TraitConcreteClass> = ( export type TraitInstance> = ( Simplify< - Extend<[ + ExtendPlain<[ Trait.OwnAbstract, Trait.OwnImplInstance, ]> @@ -131,7 +133,7 @@ export type TraitInstance> = ( export type TraitStaticMembers> = ( Simplify< - Extend<[ + ExtendPlain<[ Trait.OwnStaticAbstract, StaticMembers>, ]>