Object
A value can conform to an object IFF:
- its
typeof
is"object"
. - every key in the type exists in the value provided
- the corresponding value for each key is the correc type
Usage
import { T } from "type-guarder";
T.Object({
name: T.String(),
age: T.Number(),
}).conforms({ name: "John", age: 42 }); // true
T.Object({
name: T.String(),
age: T.Number(),
}).conforms(null); // false
T.Object({
name: T.String(),
age: T.Number(),
}).conforms({ name: "John", age: false }); // false
Nested Objects
import { T } from "type-guarder";
T.Object({
name: T.Object({
first: T.String(),
last: T.String(),
}),
email: T.Regex(^[^\s@]+@[^\s@]+\.[^\s@]+$/),
phone: T.Nullable(T.string()),
address: T.Nullable(
T.Object({
street: T.String(),
apt: T.Nullable(T.String()),
zip: T.Union(T.String(), T.Integer()),
})
),
});
Options
import { T } from "type-guarder";
T.Object(
{
name: T.String(),
age: T.Number(),
},
{
injective: true,
}
).conforms({ name: "John", age: 42, anotherKey: "I shouldn't belong here." }); // false