<S extends Schema.Constraint>(schema: S): (
input: S["~type.make.in"],
options?: Schema.MakeOptions
) => Effect.Effect<S["Type"], SchemaIssue.Issue>Creates an effectful maker for the schema's decoded type side.
When to use
Use to construct decoded schema values in Effect while preserving
construction failures as SchemaIssue.Issue values in the error channel.
Details
The returned function accepts constructor input, applies constructor defaults,
runs type-side validation unless checks are disabled, and fails with a
SchemaIssue.Issue when construction fails.
export function function makeEffect<
S extends Schema.Constraint
>(
schema: S
): (
input: S["~type.make.in"],
options?: Schema.MakeOptions
) => Effect.Effect<S["Type"], SchemaIssue.Issue>
Creates an effectful maker for the schema's decoded type side.
When to use
Use to construct decoded schema values in Effect while preserving
construction failures as SchemaIssue.Issue values in the error channel.
Details
The returned function accepts constructor input, applies constructor defaults,
runs type-side validation unless checks are disabled, and fails with a
SchemaIssue.Issue when construction fails.
makeEffect<function (type parameter) S in makeEffect<S extends Schema.Constraint>(schema: S): (input: S["~type.make.in"], options?: Schema.MakeOptions) => Effect.Effect<S["Type"], SchemaIssue.Issue>S extends import SchemaSchema.Constraint>(schema: S extends Schema.Constraintschema: function (type parameter) S in makeEffect<S extends Schema.Constraint>(schema: S): (input: S["~type.make.in"], options?: Schema.MakeOptions) => Effect.Effect<S["Type"], SchemaIssue.Issue>S) {
const const ast: SchemaAST.ASTast = const recurDefaults: (
ast: SchemaAST.AST
) => SchemaAST.AST
recurDefaults(import SchemaASTSchemaAST.const toType: <SchemaAST.AST>(ast: SchemaAST.AST) => SchemaAST.ASTStrips all encoding transformations from an AST, returning the decoded
(type-level) representation.
Details
- Memoized: same input reference → same output reference.
- Recursively walks into composite nodes (
Arrays
,
Objects
,
Example (Getting the type AST)
import { Schema, SchemaAST } from "effect"
const schema = Schema.NumberFromString
const typeAst = SchemaAST.toType(schema.ast)
console.log(typeAst._tag) // "Number"
toType(schema: S extends Schema.Constraintschema.Constraint["ast"]: SchemaAST.ASTast))
const const parser: (
input: unknown,
options?: SchemaAST.ParseOptions
) => Effect.Effect<
S["Type"],
SchemaIssue.Issue,
never
>
parser = function run<T, R>(
ast: SchemaAST.AST
): (
input: unknown,
options?: SchemaAST.ParseOptions
) => Effect.Effect<T, SchemaIssue.Issue, R>
run<function (type parameter) S in makeEffect<S extends Schema.Constraint>(schema: S): (input: S["~type.make.in"], options?: Schema.MakeOptions) => Effect.Effect<S["Type"], SchemaIssue.Issue>S["Type"], never>(const ast: SchemaAST.ASTast)
return (input: S["~type.make.in"]input: function (type parameter) S in makeEffect<S extends Schema.Constraint>(schema: S): (input: S["~type.make.in"], options?: Schema.MakeOptions) => Effect.Effect<S["Type"], SchemaIssue.Issue>S["~type.make.in"], options: Schema.MakeOptionsoptions?: import SchemaSchema.MakeOptions): import EffectEffect.interface Effect<out A, out E = never, out R = never>The Effect interface defines a value that lazily describes a workflow or
job. The workflow requires some context R, and may fail with an error of
type E, or succeed with a value of type A.
When to use
Use when you need to represent a lazy, composable workflow that can require
services, fail with a typed error, or succeed with a typed value.
Details
Effect values model resourceful interaction with the outside world,
including synchronous, asynchronous, concurrent, and parallel interaction.
They use a fiber-based concurrency model, with built-in support for
scheduling, fine-grained interruption, structured concurrency, and high
scalability.
To run an Effect value, you need a Runtime, which is a type that is
capable of executing Effect values.
Effect<function (type parameter) S in makeEffect<S extends Schema.Constraint>(schema: S): (input: S["~type.make.in"], options?: Schema.MakeOptions) => Effect.Effect<S["Type"], SchemaIssue.Issue>S["Type"], import SchemaIssueSchemaIssue.type Issue =
| SchemaIssue.Leaf
| SchemaIssue.Filter
| SchemaIssue.Encoding
| SchemaIssue.Pointer
| SchemaIssue.Composite
| SchemaIssue.AnyOf
The root discriminated union of all validation error nodes.
When to use
Use when typing the error channel in Effect<A, Issue, R> results from
schema parsing, or when writing custom formatters or issue-tree walkers.
Details
Every node has a _tag field for pattern-matching. The union includes both
terminal
Leaf
types and composite types that wrap inner issues:
Filter
,
Encoding
,
Pointer
,
Composite
,
AnyOf
. All Issue instances have a toString() that delegates to
the default formatter, so String(issue) produces a human-readable message.
Issue> => {
return const parser: (
input: unknown,
options?: SchemaAST.ParseOptions
) => Effect.Effect<
S["Type"],
SchemaIssue.Issue,
never
>
parser(
input: S["~type.make.in"]input,
options: Schema.MakeOptionsoptions?.MakeOptions.disableChecks?: boolean | undefinedWhether to disable validation for the schema.
disableChecks
? options: Schema.MakeOptions(parameter) options: {
parseOptions: SchemaAST.ParseOptions | undefined;
disableChecks: boolean | undefined;
}
options?.MakeOptions.parseOptions?: SchemaAST.ParseOptions | undefinedThe parse options to use for the schema.
parseOptions ? { ...options: Schema.MakeOptions(parameter) options: {
parseOptions: SchemaAST.ParseOptions | undefined;
disableChecks: boolean | undefined;
}
options.MakeOptions.parseOptions?: SchemaAST.ParseOptions | undefined(property) MakeOptions.parseOptions?: {
errors: "first" | "all" | undefined;
onExcessProperty: "ignore" | "error" | "preserve" | undefined;
propertyOrder: "none" | "original" | undefined;
disableChecks: boolean | undefined;
concurrency: number | "unbounded" | undefined;
}
The parse options to use for the schema.
parseOptions, ParseOptions.disableChecks?: boolean | undefinedWhether to disable checks while still applying defaults and
transformations.
disableChecks: true } : { ParseOptions.disableChecks?: boolean | undefinedWhether to disable checks while still applying defaults and
transformations.
disableChecks: true }
: options: Schema.MakeOptionsoptions?.MakeOptions.parseOptions?: SchemaAST.ParseOptions | undefinedThe parse options to use for the schema.
parseOptions
)
}
}