Skip to main content
Version: 1.x

Class: AbsentOptional<T>

Type parameters

Name
T

Hierarchy

Constructors

constructor

new AbsentOptional<T>()

Type parameters

Name
T

Overrides

Optional.constructor

Defined in

packages/optional/src/Optional.ts:436

Methods

asJSON

asJSON(): null | T

Serialize a value using designed's preferred #asJSON method

Returns

null | T

Overrides

Optional.asJSON

Defined in

packages/optional/src/Optional.ts:490


call

call<K>(key, ...args): OptionalOf<ReturnType<T[K] extends (...args: any[]) => any ? any[any] : never>>

Invoke a method on the wrapped object and return an optional of the return value

Type parameters

NameType
Kextends string | number | symbol

Parameters

NameType
keyK
...argsParameters<T[K] extends (...args: any[]) => any ? any[any] : never>[]

Returns

OptionalOf<ReturnType<T[K] extends (...args: any[]) => any ? any[any] : never>>

Inherited from

Optional.call

Defined in

packages/optional/src/Optional.ts:194


callAsync

callAsync<K>(key, ...args): AsyncOptionalOf<ReturnType<T[K] extends (...args: any[]) => any ? any[any] : never>>

Invoke a method on the wrapped object and return an Async Optional of the return value

Type parameters

NameType
Kextends string | number | symbol

Parameters

NameType
keyK
...argsParameters<T[K] extends (...args: any[]) => Promise<any> ? any[any] : never>[]

Returns

AsyncOptionalOf<ReturnType<T[K] extends (...args: any[]) => any ? any[any] : never>>

Inherited from

Optional.callAsync

Defined in

packages/optional/src/Optional.ts:206


defaultGet

defaultGet<X>(method): MaybePresentOptionalOf<T> | MaybePresentOptionalOf<X>

Inject a default value to the optional if it is absent to allow continued chaining

Type parameters

Name
X

Parameters

NameType
method() => X

Returns

MaybePresentOptionalOf<T> | MaybePresentOptionalOf<X>

Inherited from

Optional.defaultGet

Defined in

packages/optional/src/Optional.ts:229


defaultGetAsync

defaultGetAsync<X>(method): AsyncOptionalOf<T | X>

Inject a default value to the optional if it is absent to allow continued

Type parameters

Name
X

Parameters

NameType
method() => Promise<X>

Returns

AsyncOptionalOf<T | X>

Inherited from

Optional.defaultGetAsync

Defined in

packages/optional/src/Optional.ts:240


defaultGetFlat

defaultGetFlat<X>(method): OptionalOf<T | X>

Type parameters

Name
X

Parameters

NameType
method() => Optional<X>

Returns

OptionalOf<T | X>

Inherited from

Optional.defaultGetFlat

Defined in

packages/optional/src/Optional.ts:232


defaultGetFlatAsync

defaultGetFlatAsync<X>(method): AsyncOptionalOf<T | X>

Type parameters

Name
X

Parameters

NameType
method() => AsyncOptional<X>

Returns

AsyncOptionalOf<T | X>

Inherited from

Optional.defaultGetFlatAsync

Defined in

packages/optional/src/Optional.ts:246


defaultTo

defaultTo<X>(value): MaybePresentOptionalOf<T> | MaybePresentOptionalOf<X>

Inject a default value to the optional if it is absent to allow continued chaining

Type parameters

Name
X

Parameters

NameType
valueX

Returns

MaybePresentOptionalOf<T> | MaybePresentOptionalOf<X>

Inherited from

Optional.defaultTo

Defined in

packages/optional/src/Optional.ts:221


filter

filter(): Optional<T>

Example

Will remove a value that does not satisfy the predicate.

ts
Optional.of(5).filter(n => n > 5) // AbsentOptional<number>
Optional.of(5).filter(n => n === 5) // PresentOptional<number>

Returns

Optional<T>

Overrides

Optional.filter

Defined in

packages/optional/src/Optional.ts:448


filterNot

filterNot<X>(predicate): Optional<Exclude<T, X>>

Type parameters

Name
X

Parameters

NameType
predicate(value: T) => value is X

Returns

Optional<Exclude<T, X>>

Overrides

Optional.filterNot

Defined in

packages/optional/src/Optional.ts:452


flatMap

flatMap<X>(): Optional<X>

Remark

Apply a transform to the value of the optional and return a new optional of its value. This means you can take a function that returns another function and it will "collapse" the optional

Example

ts
Optional.of('Hello').map(s => s.toUpperCase()) // Optional<"HELLO">
Optional.of(null).map(s => s.toUpperCase()) // AbsentOptional<string>

Type parameters

Name
X

Returns

Optional<X>

Overrides

Optional.flatMap

Defined in

packages/optional/src/Optional.ts:459


flatMapAsync

flatMapAsync<X>(): AsyncOptional<X>

Type parameters

Name
X

Returns

AsyncOptional<X>

Overrides

Optional.flatMapAsync

Defined in

packages/optional/src/Optional.ts:463


get

get(): T

Example

ts
Optional.of(5).get() // 5
Optional.of(5).get() // throw TypeError

Returns

T

Overrides

Optional.get

Defined in

packages/optional/src/Optional.ts:502


instanceOf

instanceOf<C>(...klasses): Optional<InstanceType<C[number]>>

Type parameters

NameType
Cextends (...args: any[]) => any[]

Parameters

NameType
...klassesC

Returns

Optional<InstanceType<C[number]>>

Inherited from

Optional.instanceOf

Defined in

packages/optional/src/Optional.ts:113


isAbsent

isAbsent(): this is AbsentOptional<T>

Example

Used in an if statement, will guarantee the type of the optional as either present or absent

ts
if (maybeUser.isAbsent()) {
maybeUser; // Instance of AbsentOptional<User>
}

Returns

this is AbsentOptional<T>

Overrides

Optional.isAbsent

Defined in

packages/optional/src/Optional.ts:498


isPresent

isPresent(): this is PresentOptional<T>

Example

Used in an if statement, will guarantee the type of the optional as either present or absent

ts
if (maybeUser.isPresent()) {
maybeUser; // Instance of PresentOptional<User>
}

Returns

this is PresentOptional<T>

Overrides

Optional.isPresent

Defined in

packages/optional/src/Optional.ts:494


map

map<X>(): Optional<X>

Remark

Apply a transform to the value of the optional and return a new optional of the result. This will not allow the return value to be nullable.

Example

ts
Optional.of('Hello').map(s => s.toUpperCase()) // Optional<"HELLO">
Optional.of(null).map(s => s.toUpperCase()) // AbsentOptional<string>

Type parameters

Name
X

Returns

Optional<X>

Overrides

Optional.map

Defined in

packages/optional/src/Optional.ts:440


mapAsync

mapAsync<X>(): AsyncOptional<NonNullable<X>>

Type parameters

Name
X

Returns

AsyncOptional<NonNullable<X>>

Overrides

Optional.mapAsync

Defined in

packages/optional/src/Optional.ts:444


orElse

orElse<X>(other): T | X

Example

ts
Optional.of(5).orElse('not there') // 5 (typeof string | number)
Optional.empty().orElse('not there') // 'not there' (typeof string | number)

Type parameters

Name
X

Parameters

NameType
otherX

Returns

T | X

Overrides

Optional.orElse

Defined in

packages/optional/src/Optional.ts:467


orGet

orGet<X>(supplier): T | X

Example

Use a getter function to return a new value

ts
Optional.of(5).orGet(() => 'not there') // 5 (typeof string | number)

Type parameters

Name
X

Parameters

NameType
supplier() => X

Returns

T | X

Overrides

Optional.orGet

Defined in

packages/optional/src/Optional.ts:471


orThrow

orThrow(errThrower): T

Remark

This must throw an exception when the method is invoked or the optional itself will throw a TypeError.

Example

ts
Optional.of(5).orThrow(() => { throw new Error('I am thrown'); })
Optional.of(5).orThrow(() => new Error('I am thrown'))

Parameters

NameType
errThrower() => Error

Returns

T

Overrides

Optional.orThrow

Defined in

packages/optional/src/Optional.ts:475


pick

pick<K>(key): OptionalOf<T[K]>

Select a field from the wrapped object and return an optional of that field.

Example

ts
Optional.of({name: 'Hello'}).select('name') // Optional<"Hello">

Type parameters

NameType
Kextends string | number | symbol

Parameters

NameType
keyK

Returns

OptionalOf<T[K]>

Inherited from

Optional.pick

Defined in

packages/optional/src/Optional.ts:187


tap

tap(view): Optional<T>

Parameters

NameType
view(value: T) => unknown

Returns

Optional<T>

Inherited from

Optional.tap

Defined in

packages/optional/src/Optional.ts:136


tapAsync

tapAsync(view): AsyncOptional<T>

Parameters

NameType
view(value: T) => Promise<unknown>

Returns

AsyncOptional<T>

Inherited from

Optional.tapAsync

Defined in

packages/optional/src/Optional.ts:143


toArray

toArray(): T[]

Returns

T[]

Overrides

Optional.toArray

Defined in

packages/optional/src/Optional.ts:414


toJSON

toJSON(): null | T

Remark

Used with other libraries to allow serialization to JSON without coercing to a string

Returns

null | T

Overrides

Optional.toJSON

Defined in

packages/optional/src/Optional.ts:486


unzip

unzip<V>(this): OptionalizeArray<OptionalValue<V>>

Type parameters

NameType
Vextends Optional<[any, any], V>

Parameters

NameType
thisV

Returns

OptionalizeArray<OptionalValue<V>>

Overrides

Optional.unzip

Defined in

packages/optional/src/Optional.ts:418


unzip3

unzip3<V>(this): OptionalizeArray<OptionalValue<V>>

Type parameters

NameType
Vextends Optional<[any, any, any], V>

Parameters

NameType
thisV

Returns

OptionalizeArray<OptionalValue<V>>

Overrides

Optional.unzip3

Defined in

packages/optional/src/Optional.ts:424


zip

zip<X>(): Optional<OptionalValuesFromTuple<[Optional<T>, ...X[]]>>

Type parameters

NameType
Xextends Optional<any>[]

Returns

Optional<OptionalValuesFromTuple<[Optional<T>, ...X[]]>>

Overrides

Optional.zip

Defined in

packages/optional/src/Optional.ts:430


empty

Static empty<T>(): Optional<T>

Remark

Create an empty optional to model a failure case

Type parameters

NameType
Tunknown

Returns

Optional<T>

Inherited from

Optional.empty

Defined in

packages/optional/src/Optional.ts:68


fromJSON

Static fromJSON<T>(data): Optional<T>

Remark

Used for compatibility with other parts of this library that utilize fromJSON/asJSON/toJSON to manage serialization. This is logically the same as Optional.of

Example

ts
Optional.fromJSON(null)
Optional.fromJSON('Hello')

Type parameters

NameType
Tany

Parameters

NameType
dataT

Returns

Optional<T>

Inherited from

Optional.fromJSON

Defined in

packages/optional/src/Optional.ts:62


of

Static of<T>(value): OptionalOf<T>

Example

Create an optional from a nullable value. This will remove the types null or undefined using value != null.

ts
Optional.of('Hello') // Optional<string>
Optional.of<string>(null) // Optional<string>

Type parameters

Name
T

Parameters

NameType
valueT | Optional<NonNullable<T>>

Returns

OptionalOf<T>

Inherited from

Optional.of

Defined in

packages/optional/src/Optional.ts:43