0.21.0 • Published 8 months ago
@ark/schema v0.21.0
@ark/schema
Underlying schema language parsed from arktype syntax.
UNDER DEVELOPMENT
The parts of ArkType's type system that exist in TS (i.e. not runtime-only constraints like bounds, divisors, custom predicates, morphs etc.) are structured like this:
- Union: a set of intersections
- Intersection: a set of a basis and constraints
- Basis: this is the base type to which refinements like props are applied. It is one of three things, getting narrower as you move down the list:
- Domain:
"string" | "number" | "bigint" | "object" | "symbol"
parallels built-in TS keywords for non-enumerable value sets - Proto: Must be an
instanceof
some class (implies domain"object"
) - Unit: Must
===
some value (can be intersected with any other constraint and reduced to itself or a disjoint)
- Domain:
- Constraint: an individual condition that must be satisfied:
- Required: must have a specified literal string or symbol key and a value that conforms to a specified union or intersection
- Optional: Required conditions met or the specified key is not present
- Index: all keys that satisfy an index type must have values satisfying the corresponding value type
In this system, L
extends/subtypes/is assignable to R
if and only if the intersection L & R
is equal to L
.
0.21.0
8 months ago
0.20.0
8 months ago
0.19.0
8 months ago
0.18.0
8 months ago
0.15.0
9 months ago
0.16.0
9 months ago
0.17.0
8 months ago
0.10.0
9 months ago
0.11.0
9 months ago
0.9.0
9 months ago
0.12.0
9 months ago
0.8.0
9 months ago
0.13.0
9 months ago
0.14.0
9 months ago
0.5.0
10 months ago
0.7.0
10 months ago
0.6.0
10 months ago
0.4.0
10 months ago
0.3.3
10 months ago
0.3.2
10 months ago
0.3.1
10 months ago
0.3.0
11 months ago
0.2.2
11 months ago
0.2.1
11 months ago
0.2.0
11 months ago