Skip to main content

Class: Option<T, Exists>

Type Parameters

Type ParameterDefault type
T-
Exists extends booleanboolean

Constructors

new Option()

private new Option<T, Exists>(value: If<Exists, T, null>, exists: Exists): Option<T, Exists>

Parameters

ParameterType
valueIf<Exists, T, null>
existsExists

Returns

Option<T, Exists>

Defined in

projects/utilities/packages/result/src/lib/Option.ts:18

Properties

__STATUS__

protected __STATUS__: Exists

Internal

Branded value to ensure Success is typed correctly.

Defined in

projects/utilities/packages/result/src/lib/Option.ts:13


[ExistsProperty]

private readonly [ExistsProperty]: Exists

Defined in

projects/utilities/packages/result/src/lib/Option.ts:16


[ValueProperty]

private readonly [ValueProperty]: If<Exists, T, null>

Defined in

projects/utilities/packages/result/src/lib/Option.ts:15


none

readonly static none: Option<any, false>

Defined in

projects/utilities/packages/result/src/lib/Option.ts:902

Accessors

[toStringTag]

Get Signature

get [toStringTag](): If<Exists, "Some", "None">

Returns

If<Exists, "Some", "None">

Defined in

projects/utilities/packages/result/src/lib/Option.ts:898

Methods

[iterator]()

[iterator](): Generator<T, any, unknown>

Returns an iterator over the possibly contained value.

The iterator yields one value if the result is Some, otherwise none.

Returns

Generator<T, any, unknown>

Examples

const x = some(7);
for (const value of x) {
console.log(value);
}
// Logs 7
const x = none;
for (const value of x) {
console.log(value);
}
// Doesn't log

See

Defined in

projects/utilities/packages/result/src/lib/Option.ts:894


and()

and<OutputOption>(option: OutputOption): If<Exists, OutputOption, None<any>>

Returns None if the option is None, otherwise returns option.

Type Parameters

Type Parameter
OutputOption extends Any

Parameters

ParameterTypeDescription
optionOutputOptionThe option.

Returns

If<Exists, OutputOption, None<any>>

Examples

const x: Option<number> = some(2);
const y: Option<string> = none;
assert.equal(x.and(y), none);
const x: Option<number> = none;
const y: Option<string> = some('foo');
assert.equal(x.and(y), none);
const x: Option<number> = some(2);
const y: Option<string> = some('foo');
assert.equal(x.and(y), some('foo'));
const x: Option<number> = none;
const y: Option<string> = none;
assert.equal(x.and(y), none);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.and

Defined in

projects/utilities/packages/result/src/lib/Option.ts:484


andThen()

andThen<OutputOption>(cb: (value: T) => OutputOption): If<Exists, OutputOption, None<any>>

Calls cb if the result is Ok, otherwise returns the Err value of self.

This function can be used for control flow based on Result values.

Type Parameters

Type Parameter
OutputOption extends Any

Parameters

ParameterTypeDescription
cb(value: T) => OutputOptionThe predicate.

Returns

If<Exists, OutputOption, None<any>>

Example

function fractionOf4(value: number) {
return value === 0 ? none : some(4 / value);
}

assert.equal(some(2).andThen(fractionOf4), some(4));
assert.equal(some(0).andThen(fractionOf4), none);
assert.equal(none.andThen(fractionOf4), none);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.and_then

Defined in

projects/utilities/packages/result/src/lib/Option.ts:507


contains()

contains<Value>(value: If<Exists, Value, unknown>): this is Some<Value>

Returns true if the option is a Some value containing the given value.

Type Parameters

Type Parameter
Value

Parameters

ParameterTypeDescription
valueIf<Exists, Value, unknown>The value to compare.

Returns

this is Some<Value>

Examples

const x: Option<number> = some(2);
assert.equal(x.contains(2), true);
const x: Option<number> = some(3);
assert.equal(x.contains(2), false);
const x: Option<number> = none;
assert.equal(x.contains(2), false);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.contains

Defined in

projects/utilities/packages/result/src/lib/Option.ts:658


eq()

eq<OtherValue, OtherExists>(other: Option<OtherValue, OtherExists>): this is Option<OtherValue, OtherExists>

Checks whether or not other equals with self.

Type Parameters

Type Parameter
OtherValue
OtherExists extends boolean

Parameters

ParameterTypeDescription
otherOption<OtherValue, OtherExists>The other option to compare.

Returns

this is Option<OtherValue, OtherExists>

See

https://doc.rust-lang.org/std/cmp/trait.PartialEq.html#tymethod.eq

Defined in

projects/utilities/packages/result/src/lib/Option.ts:825


expect()

expect(message: string): If<Exists, T, never>

Returns the contained Some value.

Parameters

ParameterTypeDescription
messagestringThe message for the error. If the value is an Err, it throws an OptionError with the given message.

Returns

If<Exists, T, never>

Examples

const x: Option<string> = some(2);
assert.equal(x.expect('Whoops!'), 2);
const x: Option<string> = none;
assert.throws(() => x.expect('Whoops!'), {
name: 'OptionError',
message: 'Whoops'
});

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.expect

Defined in

projects/utilities/packages/result/src/lib/Option.ts:139


filter()

filter(predicate)

filter<R>(predicate: (value: T) => value is R): Option<R, boolean>

Returns None if the option is None, otherwise calls predicate with the wrapped value and returns:

  • Some(t) if predicate returns true (where t is the wrapped value), and
  • None if predicate returns false.
Type Parameters
Type Parameter
R
Parameters
ParameterTypeDescription
predicate(value: T) => value is RThe predicate.
Returns

Option<R, boolean>

Example
function isEven(value: number) {
return n % 2 === 0;
}

assert.equal(none.filter(isEven), none);
assert.equal(some(3).filter(isEven), none);
assert.equal(some(4).filter(isEven), some(4));
See

https://doc.rust-lang.org/std/option/enum.Option.html#method.filter

Defined in

projects/utilities/packages/result/src/lib/Option.ts:630

filter(predicate)

filter(predicate: (value: T) => boolean): Option<T, boolean>

Parameters
ParameterType
predicate(value: T) => boolean
Returns

Option<T, boolean>

Defined in

projects/utilities/packages/result/src/lib/Option.ts:631


flatten()

flatten<InnerOption, Exists>(this: Option<InnerOption, Exists>): If<Exists, InnerOption, None<any>>

Converts from Result<Result<T, E>, E> to Result<T, E>.

Type Parameters

Type Parameter
InnerOption extends Any
Exists extends boolean

Parameters

ParameterType
thisOption<InnerOption, Exists>

Returns

If<Exists, InnerOption, None<any>>

Examples

const x: Option<Option<number>> = some(some(6));
assert.equal(x.flatten(), some(6));
const x: Option<Option<number>> = some(none);
assert.equal(x.flatten(), none);
const x: Option<Option<number>> = none;
assert.equal(x.flatten(), none);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.flatten

Defined in

projects/utilities/packages/result/src/lib/Option.ts:796


inspect()

inspect(cb: (value: T) => void): this

Calls the provided closure with a reference to the contained value (if Some).

Parameters

ParameterTypeDescription
cb(value: T) => voidThe predicate.

Returns

this

Seealso

inspectAsync for the awaitable version.

Examples

some(2).inspect(console.log);
// Logs: 2
none.inspect(console.log);
// Doesn't log

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.inspect

Defined in

projects/utilities/packages/result/src/lib/Option.ts:351


inspectAsync()

inspectAsync(cb: (value: T) => unknown): Promise<Option<T, Exists>>

Calls the provided closure with a reference to the contained value (if Some).

Parameters

ParameterTypeDescription
cb(value: T) => unknownThe predicate.

Returns

Promise<Option<T, Exists>>

Seealso

inspect for the sync version.

Examples

await some(2).inspectAsync(console.log);
// Logs: 2
await none.inspectAsync(console.log);
// Doesn't log

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Option.ts:374


intoPromise()

intoPromise(): Promise<Option<Awaited<T>, Exists>>

Returns a Promise object with the awaited value (if Some).

Returns

Promise<Option<Awaited<T>, Exists>>

Example

let x = some(Promise.resolve(3));
assert.equal(await x.intoPromise(), some(3));

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Option.ts:811


isNone()

isNone(): this is None<any>

Returns true if the option is a None value.

Returns

this is None<any>

Examples

const x: Option<number> = some(2);
assert.equal(x.isNone(), false);
const x: Option<number> = none;
assert.equal(x.isNone(), true);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.is_none

Defined in

projects/utilities/packages/result/src/lib/Option.ts:87


isNoneOr()

isNoneOr(cb)

isNoneOr<R>(cb: (value: T) => value is R): this is None<any> | Some<R>

Returns true if the option is a None value or the value inside of it matches a predicate.

Type Parameters
Type Parameter
R
Parameters
ParameterType
cb(value: T) => value is R
Returns

this is None<any> | Some<R>

Examples
const x: Option<number> = some(2);
assert.equal(x.isNoneOr((x) => x > 1), true);
const x: Option<number> = some(0);
assert.equal(x.isNoneOr((x) => x > 1), false);
const x: Option<number> = none;
assert.equal(x.isNoneOr((x) => x > 1), true);
See

https://doc.rust-lang.org/std/option/enum.Option.html#method.is_none_or

Defined in

projects/utilities/packages/result/src/lib/Option.ts:112

isNoneOr(cb)

isNoneOr<R>(cb: (value: T) => R): If<Exists, R, true>

Type Parameters
Type Parameter
R extends boolean
Parameters
ParameterType
cb(value: T) => R
Returns

If<Exists, R, true>

Defined in

projects/utilities/packages/result/src/lib/Option.ts:113


isSome()

isSome(): this is Some<T>

Returns true if the option is a Some value.

Returns

this is Some<T>

Examples

const x: Option<number> = some(2);
assert.equal(x.isSome(), true);
const x: Option<number> = none;
assert.equal(x.isSome(), false);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.is_some

Defined in

projects/utilities/packages/result/src/lib/Option.ts:39


isSomeAnd()

isSomeAnd(cb)

isSomeAnd<R>(cb: (value: T) => value is R): this is Some<R>

Returns true if the option is a Some and the value inside of it matches a predicate.

Type Parameters
Type Parameter
R
Parameters
ParameterTypeDescription
cb(value: T) => value is RThe predicate.
Returns

this is Some<R>

Examples
const x: Option<number> = some(2);
assert.equal(x.isSomeAnd((x) => x > 1), true);
const x: Option<number> = some(0);
assert.equal(x.isSomeAnd((x) => x > 1), false);
const x: Option<number> = none;
assert.equal(x.isSomeAnd((x) => x > 1), false);
See

https://doc.rust-lang.org/std/option/enum.Option.html#method.is_some_and

Defined in

projects/utilities/packages/result/src/lib/Option.ts:65

isSomeAnd(cb)

isSomeAnd<R>(cb: (value: T) => R): this is Some<R> & R

Type Parameters
Type Parameter
R extends boolean
Parameters
ParameterType
cb(value: T) => R
Returns

this is Some<R> & R

Defined in

projects/utilities/packages/result/src/lib/Option.ts:66


iter()

iter(): Generator<T, any, unknown>

Returns an iterator over the possibly contained value.

The iterator yields one value if the result is Some, otherwise none.

Returns

Generator<T, any, unknown>

Examples

const x = some(7);
for (const value of x) {
console.log(value);
}
// Logs 7
const x = none;
for (const value of x) {
console.log(value);
}
// Doesn't log

See

Defined in

projects/utilities/packages/result/src/lib/Option.ts:449


map()

map<U>(cb: (value: T) => U): If<Exists, Some<U>, None<any>>

Maps an Option<T> to Option<U> by applying a function to a contained value.

Type Parameters

Type Parameter
U

Parameters

ParameterTypeDescription
cb(value: T) => UThe predicate.

Returns

If<Exists, Some<U>, None<any>>

Example

const maybeSomeString = some('Hello, world!');
const maybeSomeLength = maybeSomeString.map((value) => value.length);

assert.equal(maybeSomeLength, some(13));

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.map

Defined in

projects/utilities/packages/result/src/lib/Option.ts:227


mapInto()

mapInto<OutputOption>(cb: (value: T) => OutputOption): If<Exists, OutputOption, None<any>>

Maps a Some<T> to the returned Option<U> by applying a function to a contained value, leaving None untouched.

Type Parameters

Type Parameter
OutputOption extends Any

Parameters

ParameterTypeDescription
cb(value: T) => OutputOptionThe predicate.

Returns

If<Exists, OutputOption, None<any>>

Examples

const input: Option<string> = some('Hello, world!');
const result = input.mapInto((value) => some(value.length));

assert.equal(result, some(13));
const input: Option<string> = none;
const result = input.mapInto((value) => some(value.length));

assert.equal(result, none);

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Option.ts:253


mapNoneInto()

mapNoneInto<OutputOption>(cb: () => OutputOption): If<Exists, Some<T>, OutputOption>

Maps a None to the returned Option<U> by applying a function to a contained value, leaving Some<T> untouched.

Type Parameters

Type Parameter
OutputOption extends Any

Parameters

ParameterTypeDescription
cb() => OutputOptionThe predicate.

Returns

If<Exists, Some<T>, OutputOption>

Examples

const input: Option<string> = some('Hello, world!');
const result = input.mapNoneInto(() => some(13));

assert.equal(result, some('Hello, world!'));
const input: Option<string> = none;
const result = input.mapNoneInto(() => some(13));

assert.equal(result, some(13));

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Option.ts:329


mapOr()

mapOr<MappedOutputValue, DefaultOutputValue>(defaultValue: DefaultOutputValue, cb: (value: T) => MappedOutputValue): If<Exists, MappedOutputValue, DefaultOutputValue>

Returns the provided default result (if none), or applies a function to the contained value (if any).

Arguments passed to mapOr are eagerly evaluated; if you are passing the result of a function call, it is recommended to use mapOrElse, which is lazily evaluated.

Type Parameters

Type Parameter
MappedOutputValue
DefaultOutputValue

Parameters

ParameterTypeDescription
defaultValueDefaultOutputValueThe default value.
cb(value: T) => MappedOutputValueThe predicate.

Returns

If<Exists, MappedOutputValue, DefaultOutputValue>

Examples

const x: Option<string> = some('hello');
assert.equal(x.mapOr(42, (value) => value.length), 5);
const x: Option<string> = none;
assert.equal(x.mapOr(42, (value) => value.length), 42);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.map_or

Defined in

projects/utilities/packages/result/src/lib/Option.ts:278


mapOrElse()

mapOrElse<OutputValue, OutputNone>(defaultValue: () => OutputNone, cb: (value: T) => OutputValue): If<Exists, OutputValue, OutputNone>

Computes a default function result (if none), or applies a different function to the contained value (if any).

Type Parameters

Type Parameter
OutputValue
OutputNone

Parameters

ParameterTypeDescription
defaultValue() => OutputNoneThe default value.
cb(value: T) => OutputValueThe predicate.

Returns

If<Exists, OutputValue, OutputNone>

Examples

const x: Option<string> = some('hello');
assert.equal(x.mapOrElse(() => 42, (value) => value.length), 5);
const x: Option<string> = none;
assert.equal(x.mapOrElse(() => 42, (value) => value.length), 42);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.map_or_else

Defined in

projects/utilities/packages/result/src/lib/Option.ts:303


match()

match<SomeValue, NoneValue>(branches: object): If<Exists, SomeValue, NoneValue>

Runs ok function if self is Ok, otherwise runs err function.

Type Parameters

Type Parameter
SomeValue
NoneValue

Parameters

ParameterTypeDescription
branchesobjectThe branches to match.
branches.none-
branches.some-

Returns

If<Exists, SomeValue, NoneValue>

Examples

const option = some(4).match({
some: (v) => v,
none: () => 0
});
assert.equal(option, 4);
const option = none.match({
some: (v) => v,
none: () => 0
});
assert.equal(option, 0);

Defined in

projects/utilities/packages/result/src/lib/Option.ts:861


ne()

ne(other: Option<T, boolean>): boolean

Checks whether or not other doesn't equal with self.

Parameters

ParameterTypeDescription
otherOption<T, boolean>The other option to compare.

Returns

boolean

See

https://doc.rust-lang.org/std/cmp/trait.PartialEq.html#method.ne

Defined in

projects/utilities/packages/result/src/lib/Option.ts:836


okOr()

okOr<ErrorValue>(error: ErrorValue): If<Exists, Ok<T>, Err<ErrorValue>>

Transforms the Option<T> into a Result<T, E>, mapping Some(v) to Ok(v) and None to Err(err).

Arguments passed to okOr are eagerly evaluated; if you are passing the result of a function call, it is recommended to use okOrElse, which is lazily evaluated.

Type Parameters

Type Parameter
ErrorValue

Parameters

ParameterType
errorErrorValue

Returns

If<Exists, Ok<T>, Err<ErrorValue>>

Examples

const x: Option<string> = some('hello');
assert.equal(x.okOr(0), ok('hello'));
const x: Option<string> = none;
assert.equal(x.okOr(0), err(0));

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.ok_or

Defined in

projects/utilities/packages/result/src/lib/Option.ts:399


okOrElse()

okOrElse<ErrorValue>(cb: () => ErrorValue): If<Exists, Ok<T>, Err<ErrorValue>>

Transforms the Option<T> into a Result<T, E>, mapping Some(v) to Ok(v) and None to Err(err()).

Type Parameters

Type Parameter
ErrorValue

Parameters

ParameterTypeDescription
cb() => ErrorValueThe error to be used.

Returns

If<Exists, Ok<T>, Err<ErrorValue>>

Examples

const x: Option<string> = some('hello');
assert.equal(x.okOrElse(() => 0), ok('hello'));
const x: Option<string> = none;
assert.equal(x.okOrElse(() => 0), err(0));

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.ok_or_else

Defined in

projects/utilities/packages/result/src/lib/Option.ts:420


or()

or<OutputOption>(option: OutputOption): If<Exists, Some<T>, OutputOption>

Returns the option if it contains a value, otherwise returns option.

Type Parameters

Type Parameter
OutputOption extends Any

Parameters

ParameterTypeDescription
optionOutputOptionThe option.

Returns

If<Exists, Some<T>, OutputOption>

Examples

const x: Option<number> = some(2);
const y: Option<number> = none;
assert.equal(x.or(y), some(2));
const x: Option<number> = none;
const y: Option<number> = some(100);
assert.equal(x.or(y), some(100));
const x: Option<number> = some(2);
const y: Option<number> = some(100);
assert.equal(x.or(y), some(2));
const x: Option<number> = none;
const y: Option<number> = none;
assert.equal(x.or(y), none);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.or

Defined in

projects/utilities/packages/result/src/lib/Option.ts:542


orElse()

orElse<OutputOption>(cb: () => OutputOption): If<Exists, Some<T>, OutputOption>

Calls cb if the result is Ok, otherwise returns the Err value of self.

This function can be used for control flow based on Result values.

Type Parameters

Type Parameter
OutputOption extends Any

Parameters

ParameterTypeDescription
cb() => OutputOptionThe predicate.

Returns

If<Exists, Some<T>, OutputOption>

Example

const nobody = (): Option<string> => none;
const vikings = (): Option<string> => some('vikings');

assert.equal(some('barbarians').orElse(vikings), some('barbarians'));
assert.equal(none.orElse(vikings), some('vikings'));
assert.equal(none.orElse(nobody), none);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.or_else

Defined in

projects/utilities/packages/result/src/lib/Option.ts:564


transpose()

transpose<ResultValue, ResultError, ResultSuccess, Exists>(this: Option<Result<ResultValue, ResultError, ResultSuccess>, Exists>): If<Exists, Result<Some<ResultValue>, ResultError, ResultSuccess>, Ok<None<any>>>

Transposes an Option of a Result into a Result of an Option.

none will be mapped to ok(none). some(ok(v)) and some(err(e)) will be mapped to ok(some(v)) and err(e).

Type Parameters

Type Parameter
ResultValue
ResultError
ResultSuccess extends boolean
Exists extends boolean

Parameters

ParameterType
thisOption<Result<ResultValue, ResultError, ResultSuccess>, Exists>

Returns

If<Exists, Result<Some<ResultValue>, ResultError, ResultSuccess>, Ok<None<any>>>

Example

const x: Option<Result<number, Error>> = some(ok(5));
const y: Result<Option<number>, Error> = ok(some(5));
assert.equal(x.transpose(), y);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.transpose

Defined in

projects/utilities/packages/result/src/lib/Option.ts:765


unwrap()

unwrap(): If<Exists, T, never>

Returns the contained Some value.

If the value is an Err, it throws an OptionError with the message.

Returns

If<Exists, T, never>

Seealso

unwrapOr

Seealso

unwrapOrElse

Examples

const x: Option<string> = some(2);
assert.equal(x.unwrap(), 2);
const x: Option<string> = none;
assert.throws(() => x.unwrap(), {
name: 'OptionError',
message: 'Unwrap failed'
});

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.unwrap

Defined in

projects/utilities/packages/result/src/lib/Option.ts:168


unwrapOr()

unwrapOr<OutputValue>(defaultValue: OutputValue): If<Exists, T, OutputValue>

Returns the contained Some value or a provided default.

Arguments passed to unwrapOr are eagerly evaluated; if you are passing the result of a function call, it is recommended to use unwrapOrElse, which is lazily evaluated.

Type Parameters

Type Parameter
OutputValue

Parameters

ParameterType
defaultValueOutputValue

Returns

If<Exists, T, OutputValue>

Examples

assert.equal(some(2).unwrapOr(0), 2);
assert.equal(none.unwrapOr(0), 0);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.unwrap_or

Defined in

projects/utilities/packages/result/src/lib/Option.ts:191


unwrapOrElse()

unwrapOrElse<OutputValue>(cb: () => OutputValue): If<Exists, T, OutputValue>

Returns the contained Some value or computes it from a closure.

Type Parameters

Type Parameter
OutputValue

Parameters

ParameterType
cb() => OutputValue

Returns

If<Exists, T, OutputValue>

Examples

assert.equal(some(2).unwrapOrElse(() => 0), 2);
assert.equal(none.unwrapOrElse(() => 0), 0);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.unwrap_or_else

Defined in

projects/utilities/packages/result/src/lib/Option.ts:209


unzip()

unzip<Value0, Value1, Exists>(this: Option<readonly [Value0, Value1], Exists>): [Option<Value0, Exists>, Option<Value1, Exists>]

Unzips an option containing a tuple of two options.

If self is Some([a, b]) this method returns [Some(a), Some(b)]. Otherwise, [None, None] is returned.

Type Parameters

Type Parameter
Value0
Value1
Exists extends boolean

Parameters

ParameterType
thisOption<readonly [Value0, Value1], Exists>

Returns

[Option<Value0, Exists>, Option<Value1, Exists>]

Examples

const x: Option<[number, string]> = some([1, 'hi']);
assert.equal(x.unzip(), [some(1), some('hi')]);
const x: Option<[number, string]> = none;
assert.equal(x.unzip(), [none, none]);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.unzip

Defined in

projects/utilities/packages/result/src/lib/Option.ts:741


xor()

xor<OtherValue, OtherExists>(option: Option<OtherValue, OtherExists>): If<Exists, If<OtherExists, None<any>, Some<T>>, Option<OtherValue, OtherExists>>

Returns Some if exactly one of self or option is Some, otherwise returns None.

Type Parameters

Type Parameter
OtherValue
OtherExists extends boolean

Parameters

ParameterTypeDescription
optionOption<OtherValue, OtherExists>The option to compare.

Returns

If<Exists, If<OtherExists, None<any>, Some<T>>, Option<OtherValue, OtherExists>>

Examples

const x: Option<number> = some(2);
const y: Option<number> = none;
assert.equal(x.xor(y), some(2));
const x: Option<number> = none;
const y: Option<number> = some(2);
assert.equal(x.xor(y), some(2));
const x: Option<number> = some(2);
const y: Option<number> = some(2);
assert.equal(x.xor(y), none);
const x: Option<number> = none;
const y: Option<number> = none;
assert.equal(x.xor(y), none);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.xor

Defined in

projects/utilities/packages/result/src/lib/Option.ts:599


zip()

zip<OtherValue, OtherExists>(other: Option<OtherValue, OtherExists>): Option<[T, OtherValue], If<Exists, OtherExists, false>>

Zips self with another Option.

If self is Some(s) and other is Some(o), this method returns Some([s, o]). Otherwise, None is returned.

Type Parameters

Type Parameter
OtherValue
OtherExists extends boolean

Parameters

ParameterTypeDescription
otherOption<OtherValue, OtherExists>The option to zip self with.

Returns

Option<[T, OtherValue], If<Exists, OtherExists, false>>

Example

const x = some(1);
const y = some('hi');
const z = none;

assert.equal(x.zip(y), some([1, 'hi']));
assert.equal(x.zip(z), none);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.zip

Defined in

projects/utilities/packages/result/src/lib/Option.ts:680


zipWith()

zipWith<OtherValue, OtherExists, ReturnValue>(other: Option<OtherValue, OtherExists>, f: (value0: T, value1: OtherValue) => ReturnValue): Option<ReturnValue, If<Exists, OtherExists, false>>

Zips self and another Option with function f.

If self is Some(s) and other is Some(o), this method returns Some(f(s, o)). Otherwise, None is returned.

Type Parameters

Type Parameter
OtherValue
OtherExists extends boolean
ReturnValue

Parameters

ParameterTypeDescription
otherOption<OtherValue, OtherExists>The option to zip self with.
f(value0: T, value1: OtherValue) => ReturnValueThe function that computes the returned value.

Returns

Option<ReturnValue, If<Exists, OtherExists, false>>

Example

class Point {
public readonly x: number;
public readonly y: number;

public constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
}

const x = some(17.5);
const y = some(42.7);

assert.equal(x.zipWith(y, (s, o) => new Point(s, o)), some(new Point(17.5, 42.7)));
assert.equal(x.zipWith(none, (s, o) => new Point(s, o)), none);

See

https://doc.rust-lang.org/std/option/enum.Option.html#method.zip_with

Defined in

projects/utilities/packages/result/src/lib/Option.ts:715


[hasInstance]()

static [hasInstance](instance: unknown): boolean

Checks if the instance object is an instance of Option, or if it is a Option-like object. This override exists to interoperate with other versions of this class, such as the one coming from another version of this library or from a different build.

Parameters

ParameterTypeDescription
instanceunknownThe instance to check.

Returns

boolean

Whether or not the instance is a Option.

Example

import { Option } from '@sapphire/result';
const { some } = require('@sapphire/result');

some(2) instanceof Option; // true

Defined in

projects/utilities/packages/result/src/lib/Option.ts:927


all()

static all<Entries>(this: void, results: Entries): Option<UnwrapSomeArray<Entries>, boolean>

Creates an Ok that is the combination of all collected Ok values as an array, or the first Err encountered.

Type Parameters

Type Parameter
Entries extends readonly Any[]

Parameters

ParameterTypeDescription
thisvoid-
resultsEntriesAn array of Results.

Returns

Option<UnwrapSomeArray<Entries>, boolean>

A new Result.

Defined in

projects/utilities/packages/result/src/lib/Option.ts:1007


any()

static any<Entries>(this: void, results: Entries): Option<UnwrapSome<Entries[number]>, boolean>

Returns the first encountered Some, or a None if none was found.

Type Parameters

Type Parameter
Entries extends readonly Any[]

Parameters

ParameterType
thisvoid
resultsEntries

Returns

Option<UnwrapSome<Entries[number]>, boolean>

A new Option.

Defined in

projects/utilities/packages/result/src/lib/Option.ts:1025


from()

static from<T>(this: void, op: OptionResolvable<T, boolean> | () => OptionResolvable<T, boolean>): Option<T, boolean>

Creates a Result out of a callback.

Type Parameters

Type Parameter
T

Parameters

ParameterType
thisvoid
opOptionResolvable<T, boolean> | () => OptionResolvable<T, boolean>

Returns

Option<T, boolean>

Typeparam

T The result's type.

Typeparam

E The error's type.

Defined in

projects/utilities/packages/result/src/lib/Option.ts:976


fromAsync()

static fromAsync<T>(this: void, op: Awaitable<OptionResolvable<T, boolean>> | () => Awaitable<OptionResolvable<T, boolean>>): Promise<Option<T, boolean>>

Creates a Result out of a promise or async callback.

Type Parameters

Type Parameter
T

Parameters

ParameterType
thisvoid
opAwaitable<OptionResolvable<T, boolean>> | () => Awaitable<OptionResolvable<T, boolean>>

Returns

Promise<Option<T, boolean>>

Typeparam

T The result's type.

Typeparam

E The error's type.

Defined in

projects/utilities/packages/result/src/lib/Option.ts:991


is()

static is(instance: unknown): instance is Any

Parameters

ParameterTypeDescription
instanceunknownThe instance to check.

Returns

instance is Any

true if the instance is a Option or a Option-like object, false otherwise.

Deprecated

Use Option.isOption instead.

Checks if the instance object is an instance of Option, or if it is a Option-like object.

Example

import { Option } from '@sapphire/result';
const { some } = require('@sapphire/result');

Option.isOption(some(2)); // true

Defined in

projects/utilities/packages/result/src/lib/Option.ts:947


isOption()

static isOption(instance: unknown): instance is Any

Checks if the instance object is an instance of Option, or if it is a Option-like object.

Parameters

ParameterTypeDescription
instanceunknownThe instance to check.

Returns

instance is Any

true if the instance is a Option or a Option-like object, false otherwise.

Example

import { Option } from '@sapphire/result';
const { some } = require('@sapphire/result');

Option.isOption(some(2)); // true

Defined in

projects/utilities/packages/result/src/lib/Option.ts:965


some()

static some<T>(this: void, value?: T): Some<T>

Type Parameters

Type ParameterDefault type
Tundefined

Parameters

ParameterType
thisvoid
value?T

Returns

Some<T>

Defined in

projects/utilities/packages/result/src/lib/Option.ts:905