Hyperlinkv0.8.0-beta.28

Schema

Schema.encodeTofunctioneffect/Schema.ts:5568
<To extends Constraint>(to: To): <From extends Constraint>(
  from: From
) => decodeTo<From, To>
<To extends Constraint, From extends Constraint, RD = never, RE = never>(
  to: To,
  transformation: {
    readonly decode: SchemaGetter.Getter<
      NoInfer<From["Encoded"]>,
      NoInfer<To["Type"]>,
      RD
    >
    readonly encode: SchemaGetter.Getter<
      NoInfer<To["Type"]>,
      NoInfer<From["Encoded"]>,
      RE
    >
  }
): (from: From) => decodeTo<From, To, RD, RE>

Reverses a schema transformation so the encoded schema is supplied first.

When to use

Use to define a transformation by naming the encoded schema before the decoded schema.

Details

encodeTo(to)(from) is equivalent to to.pipe(decodeTo(from)). The from schema acts as the target decoded schema and to acts as the encoded source.

Example (Encoding a number back to a string)

import { Schema, SchemaGetter } from "effect"

const NumberFromString = Schema.Number.pipe(
  Schema.encodeTo(Schema.String, {
    decode: SchemaGetter.transform((s: string) => Number(s)),
    encode: SchemaGetter.transform((n: number) => String(n))
  })
)
transforming
Source effect/Schema.ts:556823 lines
export function encodeTo<To extends Constraint>(
  to: To
): <From extends Constraint>(from: From) => decodeTo<From, To>
export function encodeTo<To extends Constraint, From extends Constraint, RD = never, RE = never>(
  to: To,
  transformation: {
    readonly decode: SchemaGetter.Getter<NoInfer<From["Encoded"]>, NoInfer<To["Type"]>, RD>
    readonly encode: SchemaGetter.Getter<NoInfer<To["Type"]>, NoInfer<From["Encoded"]>, RE>
  }
): (from: From) => decodeTo<From, To, RD, RE>
export function encodeTo<To extends Constraint, From extends Constraint, RD = never, RE = never>(
  to: To,
  transformation?: {
    readonly decode: SchemaGetter.Getter<From["Encoded"], To["Type"], RD>
    readonly encode: SchemaGetter.Getter<To["Type"], From["Encoded"], RE>
  }
) {
  return (from: From): decodeTo<From, To, RD, RE> => {
    return transformation ?
      decodeTo<From, To, RD, RE>(from, transformation)(to) :
      decodeTo<From>(from)(to)
  }
}
Referenced by 4 symbols