API reference › @evolu/common › Type › 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 });