interface ParentChildEncoded { data: string, child?: ParentChild | undefined }
interface ParentChildType extends ParentChildEncoded { parent?: ParentChild }
type ParentChild$ = S.Schema<ParentChildType, ParentChildEncoded>
const fields = {
data: S.String,
child: S.optional(S.suspend((): ParentChild$ => ParentChild))
}
class ParentChild extends S.Class<ParentChild>('ParentChild')(fields) {
readonly parent?: ParentChild
}
const parent = new ParentChild({
data: 'The parent',
child: {
data: 'The Child',
parent: () => parent // <-- Need a thunk here?
}
})
interface ParentChildEncoded { data: string, child?: ParentChild | undefined }
interface ParentChildType extends ParentChildEncoded { parent?: ParentChild }
type ParentChild$ = S.Schema<ParentChildType, ParentChildEncoded>
const fields = {
data: S.String,
child: S.optional(S.suspend((): ParentChild$ => ParentChild))
}
class ParentChild extends S.Class<ParentChild>('ParentChild')(fields) {
readonly parent?: ParentChild
}
const parent = new ParentChild({
data: 'The parent',
child: {
data: 'The Child',
parent: () => parent // <-- Need a thunk here?
}
})