Spec-Zone.ru › Valibot

requiredAsync

Creates a modified copy of an object schema that marks all or only the selected entries as required.

const AllKeysSchema = v.requiredAsync<TSchema, TMessage>(schema, message);
const SelectedKeysSchema = v.requiredAsync<TSchema, TKeys, TMessage>(
  schema,
  keys,
  message
);

Generics

  • TSchema extends SchemaWithoutPipe<LooseObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<LooseObjectIssue> | undefined> | ObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<ObjectIssue> | undefined> | ObjectWithRestSchemaAsync<ObjectEntriesAsync, BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>, ErrorMessage<ObjectWithRestIssue> | undefined> | StrictObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<StrictObjectIssue> | undefined>>
  • TKeys ObjectKeys<TSchema>
  • TMessage ErrorMessage<NonOptionalIssue> | undefined

Parameters

  • schema TSchema
  • keys TKey
  • message TMessage

Explanation

requiredAsync creates a modified copy of the given object schema where all or only the selected keys are required. It is similar to TypeScript's Required utility type.

Because requiredAsync changes the data type of the input and output, it is not allowed to pass a schema that has been modified by the pipeAsync method, as this may cause runtime errors. Please use the pipeAsync method after you have modified the schema with requiredAsync.

Returns

  • AllKeysSchema SchemaWithRequiredAsync<TSchema, undefined, TMessage>
  • SelectedKeysSchema SchemaWithRequiredAsync<TSchema, TKeys, TMessage>

Examples

The following examples show how requiredAsync can be used.

New task schema

Schema to validate an object containing task details.

import { isOwnerPresent } from '~/api';

const UpdateTaskSchema = v.objectAsync({
  owner: v.optionalAsync(
    v.pipeAsync(
      v.string(),
      v.email(),
      v.checkAsync(isOwnerPresent, 'The owner is not in the database.')
    )
  ),
  title: v.optional(v.pipe(v.string(), v.nonEmpty(), v.maxLength(255))),
  description: v.optional(v.pipe(v.string(), v.nonEmpty())),
});

const NewTaskSchema = v.requiredAsync(UpdateTaskSchema);

/*
  {
    owner: string;
    title: string;
    description: string;
  }
*/

Related

The following APIs can be combined with requiredAsync.

Schemas

array, exactOptional, intersect, lazy, looseObject, looseTuple, map, nonNullable, nonNullish, nonOptional, nullable, nullish, object, objectWithRest, optional, record, set, strictObject, strictTuple, tuple, tupleWithRest, undefinedable, union

Methods

assert, config, fallback, forward, getDefault, getDefaults, getFallback, getFallbacks, keyof, message, omit, partial, pick, unwrap

Actions

brand, check, description, entries, flavor, guard, maxEntries, metadata, minEntries, notEntries, partialCheck, rawCheck, rawTransform, readonly, title, transform

Utils

isOfKind, isOfType

Async

arrayAsync, checkAsync, exactOptionalAsync, fallbackAsync, forwardAsync, getDefaultsAsync, getFallbacksAsync, intersectAsync, lazyAsync, looseObjectAsync, looseTupleAsync, mapAsync, nonNullableAsync, nonNullishAsync, nonOptionalAsync, nullableAsync, nullishAsync, objectAsync, objectWithRestAsync, optionalAsync, parseAsync, parserAsync, partialAsync, partialCheckAsync, rawCheckAsync, rawTransformAsync, recordAsync, safeParseAsync, safeParserAsync, setAsync, strictObjectAsync, strictTupleAsync, transformAsync, tupleAsync, tupleWithRestAsync, undefinedableAsync, unionAsync

© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/requiredAsync/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API