API reference@evolu/commonType › optional

function optional<T>(
  type: ValidateOptionalPropertyType<T>,
): OptionalProperty<T>;

Defined in: packages/common/src/Type.ts:10298

Optional object property.

An optional property may be absent. If present, its value is validated by the provided Type, so optionality does not implicitly accept undefined. Use undefinedOr when a present property may contain undefined.

Example

import { assertOk, String, object, optional, undefinedOr } from "@evolu/common";

const User = object({
  name: String,
  nickname: optional(String),
  preferredName: optional(undefinedOr(String)),
});

assertOk(User.fromUnknown({ name: "Ada" }), { name: "Ada" });
assertOk(User.fromUnknown({ name: "Ada", preferredName: undefined }), {
  name: "Ada",
  preferredName: undefined,
});