Skip to content
IC Reactor

OkResult

OkResult<T> = T extends object ? IsVariantArm<T, "Err"> extends true ? never : T : T extends object ? IsVariantArm<T, "err"> extends true ? never : T : T extends object ? IsVariantArm<T, "Ok"> extends true ? U : T : T extends object ? IsVariantArm<T, "ok"> extends true ? U : T : T

Defined in: core/src/types/result.ts:45

Extract the Ok value from a Result type. Supports both uppercase (Ok/Err - Rust) and lowercase (ok/err - Motoko).

  • If T is { Ok: U } or { ok: U }, returns U
  • If T is { Err: E } or { err: E }, returns never (filters it out from unions)
  • If T is { Ok: U } | { Err: E }, returns U (the Err variant is filtered out)
  • Otherwise, returns T as-is — including a record that has an Ok/ok/Err/err field among others, which is not a Result

T