NumberAST node matching any number value (including NaN, Infinity,
-Infinity).
Details
Default JSON serialization:
- Finite numbers are serialized as JSON numbers.
Infinity,-Infinity, andNaNare serialized as JSON strings.
If the node has an isFinite or isInt check, the string fallback is
skipped since non-finite values cannot occur.
export class class Numberclass Number {
_tag: 'Number';
getParser: () => SchemaParser.Parser;
matchKey: (s: string, options: ParseOptions) => number | undefined;
matchPart: (s: string, options: ParseOptions) => number | undefined;
_match: (regexp: RegExp, s: string, options: ParseOptions) => number | undefined;
toCodecJson: () => AST;
toCodecStringTree: () => AST;
getExpected: () => string;
annotations: Schema.Annotations.Annotations | undefined;
checks: Checks | undefined;
encoding: Encoding | undefined;
context: Context | undefined;
toString: () => string;
}
AST node matching any number value (including NaN, Infinity,
-Infinity).
Details
Default JSON serialization:
- Finite numbers are serialized as JSON numbers.
Infinity, -Infinity, and NaN are serialized as JSON strings.
If the node has an isFinite or isInt check, the string fallback is
skipped since non-finite values cannot occur.
Number extends class BaseRepresents the abstract base class for all
AST
node variants.
Details
Every AST node extends Base and inherits these fields:
annotations — user-supplied metadata (identifier, title, description,
arbitrary keys).
checks — optional
Checks
for post-type-match validation.
encoding — optional
Encoding
chain for type ↔ wire
transformations.
context — optional
Context
for per-property metadata.
Subclasses add a _tag discriminant and variant-specific data.
Base {
readonly Number._tag: "Number"_tag = "Number"
/** @internal */
Number.getParser(): SchemaParser.ParsergetParser() {
return function fromRefinement<T>(
ast: AST,
refinement: (input: unknown) => input is T
): SchemaParser.Parser
fromRefinement(this, import PredicatePredicate.isNumber)
}
/** @internal */
Number.matchKey(s: string, options: ParseOptions): number | undefinedmatchKey(s: strings: string, options: ParseOptions(parameter) options: {
errors: "first" | "all" | undefined;
onExcessProperty: "ignore" | "error" | "preserve" | undefined;
propertyOrder: "none" | "original" | undefined;
disableChecks: boolean | undefined;
concurrency: number | "unbounded" | undefined;
}
options: ParseOptions): number | undefined {
return this.Number._match(regexp: RegExp, s: string, options: ParseOptions): number | undefined_match(const isStringNumberRegExp: RegExpisStringNumberRegExp, s: strings, options: ParseOptions(parameter) options: {
errors: "first" | "all" | undefined;
onExcessProperty: "ignore" | "error" | "preserve" | undefined;
propertyOrder: "none" | "original" | undefined;
disableChecks: boolean | undefined;
concurrency: number | "unbounded" | undefined;
}
options)
}
/** @internal */
Number.matchPart(s: string, options: ParseOptions): number | undefinedmatchPart(s: strings: string, options: ParseOptions(parameter) options: {
errors: "first" | "all" | undefined;
onExcessProperty: "ignore" | "error" | "preserve" | undefined;
propertyOrder: "none" | "original" | undefined;
disableChecks: boolean | undefined;
concurrency: number | "unbounded" | undefined;
}
options: ParseOptions): number | undefined {
return this.Number._match(regexp: RegExp, s: string, options: ParseOptions): number | undefined_match(const isStringFiniteRegExp: RegExpisStringFiniteRegExp, s: strings, options: ParseOptions(parameter) options: {
errors: "first" | "all" | undefined;
onExcessProperty: "ignore" | "error" | "preserve" | undefined;
propertyOrder: "none" | "original" | undefined;
disableChecks: boolean | undefined;
concurrency: number | "unbounded" | undefined;
}
options)
}
private Number._match(regexp: RegExp, s: string, options: ParseOptions): number | undefined_match(regexp: RegExpregexp: RegExp, s: strings: string, options: ParseOptions(parameter) options: {
errors: "first" | "all" | undefined;
onExcessProperty: "ignore" | "error" | "preserve" | undefined;
propertyOrder: "none" | "original" | undefined;
disableChecks: boolean | undefined;
concurrency: number | "unbounded" | undefined;
}
options: ParseOptions): number | undefined {
return regexp: RegExpregexp.RegExp.test(string: string): booleanReturns a Boolean value that indicates whether or not a pattern exists in a searched string.
test(s: strings)
? function applyTemplateLiteralPartChecks<
A
>(
ast: AST,
value: A,
options: ParseOptions
): A | undefined
applyTemplateLiteralPartChecks(this, module globalThisglobalThis.var Number: NumberConstructor
;(value?: any) => number
An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers.
Number(s: strings), options: ParseOptions(parameter) options: {
errors: "first" | "all" | undefined;
onExcessProperty: "ignore" | "error" | "preserve" | undefined;
propertyOrder: "none" | "original" | undefined;
disableChecks: boolean | undefined;
concurrency: number | "unbounded" | undefined;
}
options)
: var undefinedundefined
}
/** @internal */
Number.toCodecJson(): ASTtoCodecJson(): type AST =
| Declaration
| Null
| Undefined
| Void
| Never
| Unknown
| Any
| String
| Number
| Boolean
| BigInt
| Symbol
| Literal
| UniqueSymbol
| ObjectKeyword
| Enum
| TemplateLiteral
| Arrays
| Objects
| Union<AST>
| Suspend
Discriminated union of all AST node types.
Details
Every Schema has an .ast property of this type. Use the guard functions
(
isString
,
isObjects
, etc.) to narrow to a specific variant,
then access variant-specific fields.
- All variants share the
Base
fields:
annotations, checks,
encoding, context.
- Discriminate on the
_tag field (e.g. "String", "Objects", "Union").
AST {
if (this.Base.checks: Checks | undefinedchecks && (function hasCheck(
checks: ReadonlyArray<Check<unknown>>,
tag: string
): boolean
hasCheck(this.Base.checks: Checks | undefined(property) Base.checks: {
0: Check<any>;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<Check<any>>>): Array<Check<any>>; (...items: Array<Check<any> | ConcatArray<Check<any>>>): Array<Check<any>> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<Check<any>>;
indexOf: (searchElement: Check<any>, fromIndex?: number) => number;
lastIndexOf: (searchElement: Check<any>, fromIndex?: number) => number;
every: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: …;
some: (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => void, thisArg?: any) => void;
map: (callbackfn: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): Array<S>; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): Array<…;
reduce: { (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: number, array: ReadonlyArray<Check<any>>) => Check<any>): Check<any>; (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: numbe…;
reduceRight: { (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: number, array: ReadonlyArray<Check<any>>) => Check<any>): Check<any>; (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: numbe…;
find: { (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): Check…;
findIndex: (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, Check<any>]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<Check<any>>;
includes: (searchElement: Check<any>, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: Check<any>, index: number, array: Array<Check<any>>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => Check<any> | undefined;
findLast: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): C…;
findLastIndex: (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => number;
toReversed: () => Array<Check<any>>;
toSorted: (compareFn?: ((a: Check<any>, b: Check<any>) => number) | undefined) => Array<Check<any>>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<Check<any>>): Array<Check<any>>; (start: number, deleteCount?: number): Array<Check<any>> };
with: (index: number, value: Check<any>) => Array<Check<any>>;
}
checks, "isFinite") || function hasCheck(
checks: ReadonlyArray<Check<unknown>>,
tag: string
): boolean
hasCheck(this.Base.checks: Checks | undefined(property) Base.checks: {
0: Check<any>;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<Check<any>>>): Array<Check<any>>; (...items: Array<Check<any> | ConcatArray<Check<any>>>): Array<Check<any>> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<Check<any>>;
indexOf: (searchElement: Check<any>, fromIndex?: number) => number;
lastIndexOf: (searchElement: Check<any>, fromIndex?: number) => number;
every: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: …;
some: (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => void, thisArg?: any) => void;
map: (callbackfn: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): Array<S>; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): Array<…;
reduce: { (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: number, array: ReadonlyArray<Check<any>>) => Check<any>): Check<any>; (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: numbe…;
reduceRight: { (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: number, array: ReadonlyArray<Check<any>>) => Check<any>): Check<any>; (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: numbe…;
find: { (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): Check…;
findIndex: (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, Check<any>]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<Check<any>>;
includes: (searchElement: Check<any>, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: Check<any>, index: number, array: Array<Check<any>>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => Check<any> | undefined;
findLast: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): C…;
findLastIndex: (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => number;
toReversed: () => Array<Check<any>>;
toSorted: (compareFn?: ((a: Check<any>, b: Check<any>) => number) | undefined) => Array<Check<any>>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<Check<any>>): Array<Check<any>>; (start: number, deleteCount?: number): Array<Check<any>> };
with: (index: number, value: Check<any>) => Array<Check<any>>;
}
checks, "isInt"))) {
return this
}
return function replaceEncoding<A extends AST>(
ast: A,
encoding: Encoding | undefined
): A
replaceEncoding(this, [const numberToJson: Linkconst numberToJson: {
to: AST;
transformation: SchemaTransformation.Transformation<any, any, any, any> | SchemaTransformation.Middleware<any, any, any, any, any, any>;
}
numberToJson])
}
/** @internal */
Number.toCodecStringTree(): ASTtoCodecStringTree(): type AST =
| Declaration
| Null
| Undefined
| Void
| Never
| Unknown
| Any
| String
| Number
| Boolean
| BigInt
| Symbol
| Literal
| UniqueSymbol
| ObjectKeyword
| Enum
| TemplateLiteral
| Arrays
| Objects
| Union<AST>
| Suspend
Discriminated union of all AST node types.
Details
Every Schema has an .ast property of this type. Use the guard functions
(
isString
,
isObjects
, etc.) to narrow to a specific variant,
then access variant-specific fields.
- All variants share the
Base
fields:
annotations, checks,
encoding, context.
- Discriminate on the
_tag field (e.g. "String", "Objects", "Union").
AST {
if (this.Base.checks: Checks | undefinedchecks && (function hasCheck(
checks: ReadonlyArray<Check<unknown>>,
tag: string
): boolean
hasCheck(this.Base.checks: Checks | undefined(property) Base.checks: {
0: Check<any>;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<Check<any>>>): Array<Check<any>>; (...items: Array<Check<any> | ConcatArray<Check<any>>>): Array<Check<any>> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<Check<any>>;
indexOf: (searchElement: Check<any>, fromIndex?: number) => number;
lastIndexOf: (searchElement: Check<any>, fromIndex?: number) => number;
every: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: …;
some: (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => void, thisArg?: any) => void;
map: (callbackfn: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): Array<S>; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): Array<…;
reduce: { (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: number, array: ReadonlyArray<Check<any>>) => Check<any>): Check<any>; (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: numbe…;
reduceRight: { (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: number, array: ReadonlyArray<Check<any>>) => Check<any>): Check<any>; (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: numbe…;
find: { (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): Check…;
findIndex: (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, Check<any>]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<Check<any>>;
includes: (searchElement: Check<any>, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: Check<any>, index: number, array: Array<Check<any>>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => Check<any> | undefined;
findLast: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): C…;
findLastIndex: (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => number;
toReversed: () => Array<Check<any>>;
toSorted: (compareFn?: ((a: Check<any>, b: Check<any>) => number) | undefined) => Array<Check<any>>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<Check<any>>): Array<Check<any>>; (start: number, deleteCount?: number): Array<Check<any>> };
with: (index: number, value: Check<any>) => Array<Check<any>>;
}
checks, "isFinite") || function hasCheck(
checks: ReadonlyArray<Check<unknown>>,
tag: string
): boolean
hasCheck(this.Base.checks: Checks | undefined(property) Base.checks: {
0: Check<any>;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<Check<any>>>): Array<Check<any>>; (...items: Array<Check<any> | ConcatArray<Check<any>>>): Array<Check<any>> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<Check<any>>;
indexOf: (searchElement: Check<any>, fromIndex?: number) => number;
lastIndexOf: (searchElement: Check<any>, fromIndex?: number) => number;
every: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: …;
some: (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => void, thisArg?: any) => void;
map: (callbackfn: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): Array<S>; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): Array<…;
reduce: { (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: number, array: ReadonlyArray<Check<any>>) => Check<any>): Check<any>; (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: numbe…;
reduceRight: { (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: number, array: ReadonlyArray<Check<any>>) => Check<any>): Check<any>; (callbackfn: (previousValue: Check<any>, currentValue: Check<any>, currentIndex: numbe…;
find: { (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): Check…;
findIndex: (predicate: (value: Check<any>, index: number, obj: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, Check<any>]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<Check<any>>;
includes: (searchElement: Check<any>, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: Check<any>, index: number, array: Array<Check<any>>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => Check<any> | undefined;
findLast: { (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any): C…;
findLastIndex: (predicate: (value: Check<any>, index: number, array: ReadonlyArray<Check<any>>) => unknown, thisArg?: any) => number;
toReversed: () => Array<Check<any>>;
toSorted: (compareFn?: ((a: Check<any>, b: Check<any>) => number) | undefined) => Array<Check<any>>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<Check<any>>): Array<Check<any>>; (start: number, deleteCount?: number): Array<Check<any>> };
with: (index: number, value: Check<any>) => Array<Check<any>>;
}
checks, "isInt"))) {
return function replaceEncoding<A extends AST>(
ast: A,
encoding: Encoding | undefined
): A
replaceEncoding(this, [const finiteToString: Linkconst finiteToString: {
to: AST;
transformation: SchemaTransformation.Transformation<any, any, any, any> | SchemaTransformation.Middleware<any, any, any, any, any, any>;
}
finiteToString])
}
return function replaceEncoding<A extends AST>(
ast: A,
encoding: Encoding | undefined
): A
replaceEncoding(this, [const numberToString: Linkconst numberToString: {
to: AST;
transformation: SchemaTransformation.Transformation<any, any, any, any> | SchemaTransformation.Middleware<any, any, any, any, any, any>;
}
numberToString])
}
/** @internal */
Number.getExpected(): stringgetExpected(): string {
return "number"
}
}