API reference@evolu/commonType › result

function result<OkType, ErrorType>(
  okType: ValidateElement<OkType>,
  errorType: ValidateElement<ErrorType>,
): DiscriminatedUnionType<
  "ok",
  readonly [
    StrictObjectType<{
      ok: LiteralType<true>;
      value: OkType;
    }>,
    StrictObjectType<{
      error: ErrorType;
      ok: LiteralType<false>;
    }>,
  ]
>;

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

Creates a Type for Result values.

Use this to validate Results crossing a storage, worker, API, or other serialization boundary. fromUnknown returns an outer validation Result. Its successful value is the inner domain Result described by okType and errorType.

Example

import {
  assertOk,
  NonNegativeInt,
  String,
  object,
  result,
  typed,
} from "@evolu/common";

const SyncResponse = result(
  object({ timestamp: NonNegativeInt }),
  typed("SyncFailed", { message: String }),
);

const validated = SyncResponse.fromUnknown({
  ok: true,
  value: { timestamp: 42 },
});

assertOk(validated, { ok: true, value: { timestamp: 42 } });
assertOk(validated.value, { timestamp: 42 });