0.1.6 (#7)
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com> Reviewed-on: #7
This commit was merged in pull request #7.
This commit is contained in:
35
src/tests.ts
Normal file
35
src/tests.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { Schema as S } from "@effect/schema"
|
||||
import { reaction, runInAction } from "mobx"
|
||||
import { Jsonifiable, MutableTaggedClass } from "./Schema"
|
||||
import { ObservableClass } from "./Schema/MobX"
|
||||
|
||||
|
||||
class User extends MutableTaggedClass<User>()("User", {
|
||||
id: S.BigIntFromSelf,
|
||||
role: S.Union(S.Literal("BasicUser"), S.Literal("Admin")),
|
||||
}).pipe(
|
||||
ObservableClass
|
||||
) {}
|
||||
|
||||
const JsonifiableUser = User.pipe(
|
||||
Jsonifiable(S.Struct({
|
||||
...User.fields,
|
||||
id: S.BigInt,
|
||||
}))
|
||||
)
|
||||
|
||||
|
||||
const user1 = new User({ id: -1n, role: "BasicUser" })
|
||||
reaction(() => user1.id, id => console.log(`user1 id changed: ${ id }`))
|
||||
|
||||
|
||||
class Admin extends User.extend<Admin>("Admin")({
|
||||
// role: S.Literal("Admin")
|
||||
}) {}
|
||||
|
||||
const user2 = new Admin({ id: -1n, role: "Admin" })
|
||||
reaction(() => user2.id, id => console.log(`user2 id changed: ${ id }`))
|
||||
|
||||
|
||||
runInAction(() => { user1.id = 1n })
|
||||
runInAction(() => { user2.id = 2n })
|
||||
Reference in New Issue
Block a user