unique
The array has no duplicate items.
Signature
ts
function unique<T>(by?: (item: T) => unknown, msg?: Message): Action<T[]>Parameters
| Parameter | Type | Description |
|---|---|---|
by | (item: T) => unknown | What to compare by: (u) => u.email. Default — the item itself |
msg | Message | Custom error message |
Error codes
| Code | When | Default message |
|---|---|---|
unique | There are duplicates | Must not contain duplicates |
You can change the texts: see Messages & i18n.
Notes
Strings and numbers are compared by value, objects by content.
Example
ts
const Invite = object({
emails: pipe(array(pipe(string(), email())), unique()),
members: pipe(array(object({ email: string() })), unique((m) => m.email.toLowerCase())),
});