Skip to main content
Version: 1.x

Class: PresentOptional<T>

Type parameters​

Name
T

Hierarchy​

Constructors​

constructor​

• new PresentOptional<T>(value)

Type parameters​

Name
T

Parameters​

NameType
valueT

Overrides​

Optional.constructor

Defined in​

packages/optional/src/Optional.ts:353

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:396


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(predicate): 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>

Parameters​

NameType
predicate(value: T) => boolean

Returns​

Optional<T>

Overrides​

Optional.filter

Defined in​

packages/optional/src/Optional.ts:340


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:346


flatMap​

▸ flatMap<X>(transform): 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

Parameters​

NameType
transform(value: T) => Optional<X>

Returns​

Optional<X>

Overrides​

Optional.flatMap

Defined in​

packages/optional/src/Optional.ts:367


flatMapAsync​

▸ flatMapAsync<X>(transform): AsyncOptional<X>

Type parameters​

Name
X

Parameters​

NameType
transform(value: T) => AsyncOptional<X> | Promise<Optional<X>>

Returns​

AsyncOptional<X>

Overrides​

Optional.flatMapAsync

Defined in​

packages/optional/src/Optional.ts:371


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:408


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:404


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:400


map​

▸ map<X>(transform): Optional<NonNullable<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

Parameters​

NameType
transform(value: T) => X

Returns​

Optional<NonNullable<X>>

Overrides​

Optional.map

Defined in​

packages/optional/src/Optional.ts:357


mapAsync​

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

Type parameters​

Name
X

Parameters​

NameType
transform(value: T) => Promise<X>

Returns​

AsyncOptional<NonNullable<X>>

Overrides​

Optional.mapAsync

Defined in​

packages/optional/src/Optional.ts:361


orElse​

▸ orElse<X>(_value): 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
_valueX

Returns​

T | X

Overrides​

Optional.orElse

Defined in​

packages/optional/src/Optional.ts:380


orGet​

▸ orGet(): T

Example

Use a getter function to return a new value

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

Returns​

T

Overrides​

Optional.orGet

Defined in​

packages/optional/src/Optional.ts:384


orThrow​

▸ orThrow(): 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'))

Returns​

T

Overrides​

Optional.orThrow

Defined in​

packages/optional/src/Optional.ts:388


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:308


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:392


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:312


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:319


zip​

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

Type parameters​

NameType
Xextends Optional<any>[]

Parameters​

NameType
...othersX

Returns​

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

Overrides​

Optional.zip

Defined in​

packages/optional/src/Optional.ts:326


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