diff --git a/src/effect/EffectSchemaTraitExpressionBuilder.ts b/src/effect/EffectSchemaTraitExpressionBuilder.ts index a67c018..051e0cb 100644 --- a/src/effect/EffectSchemaTraitExpressionBuilder.ts +++ b/src/effect/EffectSchemaTraitExpressionBuilder.ts @@ -7,20 +7,32 @@ import { traitsUnique } from "../traitsUnique" export class EffectSchemaTraitExpressionBuilder< - Superclass extends S.Class, - const Traits extends readonly Trait[], - Fields extends S.Struct.Fields, A, I, R, C, Inherited extends object, Proto, + Static extends object, + + const Traits extends readonly Trait[], > { constructor( - readonly expressionSuperclass: Superclass, + readonly expressionSuperclass: S.Class & Static, readonly expressionTraits: Traits, ) {} + class( + identifier: string, + fields: NewFields, + annotations?: S.Annotations.Schema + ) { + return new EffectSchemaTraitExpressionBuilder( + S.Class(identifier)(fields, annotations), + this.expressionTraits, + ) + } + + extends< Super extends S.Class, @@ -58,13 +70,13 @@ export class EffectSchemaTraitExpressionBuilder< >( ...traits: T ): EffectSchemaTraitExpressionBuilder< - Superclass, - TraitExpressionBuilder.ExpressesReturnTypeTraits, - Fields, A, I, R, C, Inherited, - Proto + Proto, + Static, + + TraitExpressionBuilder.ExpressesReturnTypeTraits > { return new EffectSchemaTraitExpressionBuilder( this.expressionSuperclass,