@luolapeikko/result-option
    Preparing search index...

    Class IOk<OkType>

    Result Ok instance.

    Note: this class should not be used directly, use Ok function instead

    v1.0.0

    Type Parameters

    • OkType

      Ok type

    Implements

    Index

    Constructors

    Accessors

    • get isErr(): false

      Check that result is an error

      Returns false

      true if result is an error

      Ok<number>(2).isErr // false
      Err<Error>(new Error('broken')).isErr // true
    • get isOk(): true

      Check that result is not an error

      Returns true

      true if result is not an error

      Ok<number>(2).isOk // true
      Err<Error>(new Error('broken')).isOk // false

    Methods

    • Method to combine two results, if the first result is true return the second result, otherwise return the first result

      Type Parameters

      • CompareType

      Parameters

      Returns IResult<CompareType>

      • Result based on the self value and the value parameter
      Err<Error>(new Error('broken')).and(Ok<number>(3)) // Err<Error>(new Error('broken'))
      Ok<number>(2).and(Err<number>(new Error('broken'))) // Err<Error>(new Error('broken'))
      Ok<number>(2).and(Ok<number>(3)) // Ok<number>(3)
    • Method to combine two results, if the first result is true use the value to build a new result, otherwise return the error

      Type Parameters

      • OutResult extends IResult<unknown, unknown>

      Parameters

      Returns OutResult

      • Result based on the self value and the value parameter
      Ok<number>(2).andThen<IResult<number>>((val) => Ok(val + 1)) // Ok<number>(3)
      Err<'broken'>('broken').andThen<IResult<number>>((val) => Ok(val + 1)) // Err<'broken'>('broken')
    • Method to combine two results, if the first result is true use the value to build a new result from Promise, otherwise return the error

      Type Parameters

      • OutResult extends IResult<unknown, unknown>

      Parameters

      • callbackFunc: (val: OkType) => Promise<OutResult>

        callback to build a new result

      Returns Promise<OutResult>

      • Result based on the self value and the value parameter
      await Ok<number>(2).andThen<IResult<number>>((val) => Promise.resolve(Ok(val + 1))) // Ok<number>(3)
      await Err<'broken'>('broken').andThen<IResult<number>>((val) => Promise.resolve(Ok(val + 1))) // Err<'broken'>('broken')
    • Method to compare two results

      Parameters

      • other: IResult

        other result to compare

      Returns boolean

      true if results are equal

      Ok<number>(2).eq(Ok<number>(2)) // true
      Ok<number>(2).eq(Ok<number>(3)) // false
      Err<number>(2).eq(Err<number>(2)) // true
    • Try to get the error, otherwise return undefined

      Returns undefined

      error or undefined

      Ok<number>(2).err() // undefined
      Err<Error>(new Error('broken')).err() // Error('broken')
    • Inspect the result value if Ok

      Parameters

      • fn: (value: OkType) => void

        function to inspect the value

      Returns this

      this result instance

      Ok<number>(2).inspect((value) => console.log('Value:', value)).unwrap() // logs 'Value: 2' and returns 2
      

      v1.0.8

    • Inspect the result value if Err

      Parameters

      • _fn: (value: never) => void

      Returns this

      this result instance

      Err<Error>(new Error('broken')).inspectErr((err) => console.error('Error:', err)).unwrap() // logs 'Error: Error('broken')' and throws
      

      v1.0.8

    • Returns true if the result is Err and callback function returns true for the value inside of Err.

      Parameters

      • _callbackFunc: (value: never) => boolean

      Returns false

      true if the result is Err and the callback function returns true for the value inside of Err

      Err<Error>(new Error('broken')).isErrAnd((err) => err.message === 'broken') // true
      Err<Error>(new Error('broken')).isErrAnd((err) => err.message === 'not broken') // false
      Ok<number>(2).isErrAnd((err) => err.message === 'broken') // false

      v1.0.8

    • Returns true if the result is Ok and callback function returns true for the value inside of Ok.

      Parameters

      • callbackFunc: (value: OkType) => boolean

        function to check the value inside of Ok

      Returns boolean

      true if the result is Ok and the callback function returns true for the value inside of Ok

      Ok<number>(2).isOkAnd((value) => value === 2) // true
      Ok<number>(2).isOkAnd((value) => value === 3) // false
      Err<Error>(new Error('broken')).isOkAnd((value) => value === 2) // false

      v1.0.8

    • Iterate over the result value

      Returns IterableIterator<IOk<OkType>>

      iterable iterator of the result value

      Ok<number>(2).iter().next().value; // Ok<number>(2)
      Err<Error>(new Error('broken')).iter().next().done; // true (no values to iterate)

      v1.0.9

    • Map the error value to a new value if Err

      Type Parameters

      • NewErrType

      Parameters

      Returns this

      new error result instance with mapped error

      const mapAsTypeErr = (err: Error): TypeError => new TypeError(`Mapped: ${err.message}`);
      Err<Error>(new Error('broken')).mapErr(mapAsTypeErr) // Err<TypeError>(new TypeError('Mapped: broken'))
      Ok<number>(2).mapErr(mapAsTypeErr); // Ok<number>(2)
      // error mapping and logging example
      const logErr = (err: Error) => console.error('Error:', err);
      Err<Error>(new Error('broken')).mapErr(mapAsTypeErr).inspectErr(logErr);

      v1.0.4

    • Method to combine two results, if the first result is false return the second result, otherwise return the first result

      Type Parameters

      • CompareType

      Parameters

      Returns this

      • Result based on the self value and the value parameter
      Err<Error>(new Error('broken')).or(Ok<number>(3)) // Ok<number>(3)
      Ok<number>(2).or(Err<Error>(new Error('broken'))) // Ok<number>(2)
      Ok<number>(2).or(Ok<number>(3)) // Ok<number>(2)
    • Method to combine two results, if the first result is false use the error to build a new result, otherwise return the first result

      Type Parameters

      • OutResult extends IResult<unknown, unknown>

      Parameters

      Returns this

      • Result based on the self value and the value parameter
      Ok<number>(2).orElse<IResult<number>>((errValue) => Ok(errValue * 2)) // Ok<number>(2)
      Err<number>(2).orElse<IResult<number>>((errValue) => Ok(errValue * 2)) // Ok<number>(4)
    • Method to combine two results, if the first result is false use the error to build a new result from Promise, otherwise return the first result

      Type Parameters

      • OutResult extends IResult<unknown, unknown>

      Parameters

      • _callbackFunc: (value: never) => Promise<OutResult>

      Returns this

      • Result based on the self value and the value parameter
      await Ok<number>(2).orElsePromise<IResult<number>>((errValue) => Promise.resolve(Ok(errValue * 2))) // Ok<number>(2)
      await Err<number>(2).orElsePromise<IResult<number>>((errValue) => Promise.resolve(Ok(errValue * 2))) // Ok<number>(4)
    • Convert result to JSON {$class: 'Result::Ok', value: OkType} or {$class: 'Result::Err', value: ErrType}

      Returns IJsonOk<OkType>

      JSON representation of the result

      Ok<number>(2).toJSON() // {$class: 'Result::Ok', value: 2}
      Err<number>(2).toJSON() // {$class: 'Result::Err', value: 2}
    • Convert result to string

      Returns `Ok(${string})`

      string representation of the result

      Ok<number>(2).toString() // 'Ok(2)'
      Err<number>(2).toString() // 'Err(2)'
    • Method to unwrap the value or throw an error.

      Note: Error argument/callback was removed in favor of the .errMap((e) => new Error(e.message)).unwrap() method.

      Returns OkType

      Ok<number>(2).unwrap() // 2
      Err<Error>(new Error('broken')).unwrap() // throws Error('broken')