JsonifiableStruct
All checks were successful
Lint / lint (push) Successful in 10s

This commit is contained in:
Julien Valverdé
2024-06-18 01:35:09 +02:00
parent f6c7bf4941
commit 516cc76582

View File

@@ -21,14 +21,24 @@ const MyJsonifiedObject = S.Struct({
export function Jsonifiable< export function Jsonifiable<
A, I, R, A, I, R,
JsonifiableA extends I, JsonifiableI extends TF.Jsonifiable, JsonifiableR, JsonifiableA extends I, JsonifiableI extends TF.Jsonifiable, JsonifiableR,
// JsonifiableFields extends Schema.Struct.Fields
>( >(
schema: S.Schema<A, I, R>, schema: S.Schema<A, I, R>,
// jsonifiable: Schema.Struct<JsonifiableFields> & { readonly Type: I },
jsonifiable: S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>, jsonifiable: S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>,
) { ) {
return jsonifiable.pipe(S.compose(schema)) return jsonifiable.pipe(S.compose(schema))
} }
export function JsonifiableStruct<
A, I, R,
JsonifiableA extends I, JsonifiableI extends TF.Jsonifiable, JsonifiableR,
JsonifiableFields extends S.Struct.Fields,
>(
schema: S.Schema<A, I, R>,
jsonifiable: S.Struct<JsonifiableFields> & S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>,
) {
return jsonifiable.pipe(S.compose(schema))
}
const MyJsonifiableObject = Jsonifiable(MyObjectStruct, MyJsonifiedObject) const MyJsonifiableObject = Jsonifiable(MyObjectStruct, MyJsonifiedObject)
const MyJsonifiableObject2 = JsonifiableStruct(MyObjectStruct, MyJsonifiedObject)