Core
assert
assert
assert<T>(value: unknown, struct: Struct<T>, message?: string) => asserts value is T
Assert that value
is valid according to a struct
. If the value is invalid a StructError
will be thrown (the optional message
parameter allows you to override error's message).
🤖 When using TypeScript
assert
acts as an assertion function, so you can ensure that after calling it the type of thevalue
matches the shape of the struct.
create
create
create<T>(value: unknown, struct: Struct<T>, message?: string) => T
Create a value
using the coercion logic that is built-in to the struct, returning the newly coerced value. If the value is invalid a StructError
will be thrown (the optional message
parameter allows you to override error's message).
🤖 If you want coercion logic like defaulted values, you must call this helper before running validation.
is
is
is<T>(value: unknown, struct: Struct<T>) => value is T
Test that value
is valid, returning a boolean representing whether it is valid or not.
🤖 When using TypeScript
is
acts as a type guard, so you can use it in anif
statement to ensure that inside the statement thevalue
matches the shape of the struct.
mask
mask
mask<T>(value: unknown, struct: Struct<T>, message?: string) => T
Mask a value
, returning a new value containing only properties defined by a struct
. Conceptually this is similar to create
, except that extra properties are omitted from the newly created value instead of throwing a StructError
. If an error is thrown anyway, the optional message
parameter allows you to override its message.
Note that when mask
is used with type
— given that type
signals to the core that an object might have arbitrary additional properties — unknown properties will be retained in the returned value.
🤖 Just like
create
,mask
includes coercion logic and works recursively.
validate
validate
validate<T>(value: unknown, struct: Struct<T>, options: Object) => [StructError, T]
Validate value
, returning a result tuple. If the value is invalid the first element will be a StructError
. Otherwise, the first element will be undefined
and the second element will be a value that is guaranteed to match the struct.
You can pass { coerce: true }
as the third argument to enable coercion of the input value. As well as pass { message: 'Your custom error message' }
to override the message of the StructError
.
Last updated