SuspendA lazily resolved representation used for recursive schemas.
Details
thunk points to the actual representation, possibly via a
Reference. checks is always empty on Suspend nodes.
export interface Suspend {
readonly Suspend._tag: "Suspend"_tag: "Suspend"
readonly Suspend.annotations?: Schema.Annotations.Annotations | undefinedannotations?: import SchemaSchema.Annotations.interface Annotations.AnnotationsThis interface is used to define the annotations that can be attached to a
schema. You can extend this interface to define your own annotations.
Details
Note that both a missing key or undefined is used to indicate that the
annotation is not present.
This means that can remove any annotation by setting it to undefined.
Example (Defining your own annotations)
import { Schema } from "effect"
// Extend the Annotations interface with a custom `version` annotation
declare module "effect/Schema" {
namespace Annotations {
interface Annotations {
readonly version?:
| readonly [major: number, minor: number, patch: number]
| undefined
}
}
}
// The `version` annotation is now recognized by the TypeScript compiler
const schema = Schema.String.annotate({ version: [1, 2, 0] })
// const version: readonly [major: number, minor: number, patch: number] | undefined
const version = Schema.resolveAnnotations(schema)?.["version"]
if (version) {
// Access individual parts of the version
console.log(version[1])
// Output: 2
}
Annotations | undefined
readonly Suspend.checks: readonly [](property) Suspend.checks: {
length: 0;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<never>>): Array<never>; (...items: Array<ConcatArray<never>>): Array<never> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<never>;
indexOf: (searchElement: never, fromIndex?: number) => number;
lastIndexOf: (searchElement: never, fromIndex?: number) => number;
every: { (predicate: (value: never, index: number, array: ReadonlyArray<never>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: never, index: number, array: ReadonlyArray<never>) => unknown, thisArg?: any): boolean };
some: (predicate: (value: never, index: number, array: ReadonlyArray<never>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: never, index: number, array: ReadonlyArray<never>) => void, thisArg?: any) => void;
map: (callbackfn: (value: never, index: number, array: ReadonlyArray<never>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: never, index: number, array: ReadonlyArray<never>) => value is S, thisArg?: any): Array<S>; (predicate: (value: never, index: number, array: ReadonlyArray<never>) => unknown, thisArg?: any): Array<never> };
reduce: { (callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: ReadonlyArray<never>) => never): never; (callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: ReadonlyArray<never>) => …;
reduceRight: { (callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: ReadonlyArray<never>) => never): never; (callbackfn: (previousValue: never, currentValue: never, currentIndex: number, array: ReadonlyArray<never>) => …;
find: { (predicate: (value: never, index: number, obj: ReadonlyArray<never>) => value is S, thisArg?: any): S | undefined; (predicate: (value: never, index: number, obj: ReadonlyArray<never>) => unknown, thisArg?: any): undefined };
findIndex: (predicate: (value: never, index: number, obj: ReadonlyArray<never>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, never]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<never>;
includes: (searchElement: never, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: never, index: number, array: Array<never>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => undefined;
findLast: { (predicate: (value: never, index: number, array: ReadonlyArray<never>) => value is S, thisArg?: any): S | undefined; (predicate: (value: never, index: number, array: ReadonlyArray<never>) => unknown, thisArg?: any): undefined };
findLastIndex: (predicate: (value: never, index: number, array: ReadonlyArray<never>) => unknown, thisArg?: any) => number;
toReversed: () => Array<never>;
toSorted: (compareFn?: ((a: never, b: never) => number) | undefined) => Array<never>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<never>): Array<never>; (start: number, deleteCount?: number): Array<never> };
with: (index: number, value: never) => Array<never>;
}
checks: readonly []
readonly Suspend.thunk: Representationthunk: type Representation =
| Declaration
| Reference
| Suspend
| Null
| Undefined
| Void
| Never
| Unknown
| Any
| String
| Number
| Boolean
| BigInt
| Symbol
| Literal
| UniqueSymbol
| ObjectKeyword
| Enum
| TemplateLiteral
| Arrays
| Objects
| Union
The core tagged union of all supported schema shapes.
Details
Each variant has a _tag discriminator. Switch on _tag to handle each
shape. Most variants carry optional annotations and some carry checks
for validation constraints.
Representation
}