Core

assert

assert<T>(value: unknown, struct: Struct<T>) => asserts value is T

assert(value, User)

Assert that value is valid according to a struct. If the value is invalid a StructError will be thrown.

🤖 When using TypeScript assert acts as an assertion function, so you can ensure that after calling it the type of the value matches the shape of the struct.

create

create<T>(value: unknown, struct: Struct<T>) => unknown

const user = create(value, User)

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.

🤖 If you want coercion logic like defaulted values, you must call this helper before running validation.

is

is<T>(value: unknown, struct: Struct<T>) => value is T

if (is(value, User)) {
// ...
}

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 an if statement to ensure that inside the statement the value matches the shape of the struct.

validate

validate<T>(value: unknown, struct: Struct<T>, options: Object) => [StructError, T]

const [err, user] = validate(value, User)

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.