diff --git a/src/effect/schema/class/MutableClass.ts b/src/effect/schema/class/MutableClass.ts index 8ab537b..38c14b5 100644 --- a/src/effect/schema/class/MutableClass.ts +++ b/src/effect/schema/class/MutableClass.ts @@ -1,7 +1,7 @@ import { Schema as S } from "@effect/schema" import type { Annotations, Class, Struct } from "@effect/schema/Schema" +import type { Mutable } from "effect/Types" import type { StaticType } from "../../../StaticType" -import type { TMutableClass } from "./TMutableClass" import type { HasFields } from "./util" @@ -17,7 +17,26 @@ extends Omit< "extend" > { + new( + ...args: ConstructorParameters> + ): Omit< + InstanceType>, + keyof Fields + > & + Mutable> + extend(identifier: string): ( + fields: newFields | HasFields, + annotations?: Annotations.Schema, + ) => IMutableClass< + Extended, + Fields & newFields, + I & Struct.Encoded, + R | Struct.Context, + C & Struct.Constructor, + Self, + Proto + > } @@ -26,7 +45,7 @@ export function MutableClass(identifier: string) { fieldsOr: Fields | HasFields, annotations?: Annotations.Schema, ) => - S.Class(identifier)(fieldsOr, annotations) as TMutableClass< + S.Class(identifier)(fieldsOr, annotations) as IMutableClass< Self, Fields, Struct.Encoded, diff --git a/src/effect/schema/class/index.ts b/src/effect/schema/class/index.ts index fa8edb0..c099da4 100644 --- a/src/effect/schema/class/index.ts +++ b/src/effect/schema/class/index.ts @@ -2,5 +2,5 @@ export { Class } from "./Class" export { MobXObservable } from "./MobXObservable" export { Mutable } from "./Mutable" export { MutableClass } from "./MutableClass" -export type { TMutableClass } from "./TMutableClass" +export type { IMutableClass } from "./MutableClass" export { TaggedClass } from "./TaggedClass" diff --git a/src/effect/schema/class/tests.ts b/src/effect/schema/class/tests.ts index ddad564..60fe28c 100644 --- a/src/effect/schema/class/tests.ts +++ b/src/effect/schema/class/tests.ts @@ -8,14 +8,14 @@ import { TaggedClass } from "./TaggedClass" const UserSuper = () => pipe( - // Class("User")({ - // id: S.BigIntFromSelf, - // role: S.Union(S.Literal("BasicUser"), S.Literal("Admin")), - // }), - TaggedClass()("User", { + MutableClass("User")({ id: S.BigIntFromSelf, role: S.Union(S.Literal("BasicUser"), S.Literal("Admin")), }), + // TaggedClass()("User", { + // id: S.BigIntFromSelf, + // role: S.Union(S.Literal("BasicUser"), S.Literal("Admin")), + // }), // Mutable, MobXObservable,