Class: PresentOptional<T>
Type parameters
| Name |
|---|
T |
Hierarchy
Optional<T>↳
PresentOptional
Constructors
constructor
• new PresentOptional<T>(value)
Type parameters
| Name |
|---|
T |
Parameters
| Name | Type |
|---|---|
value | T |
Overrides
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
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
| Name | Type |
|---|---|
K | extends string | number | symbol |
Parameters
| Name | Type |
|---|---|
key | K |
...args | Parameters<T[K] extends (...args: any[]) => any ? any[any] : never>[] |
Returns
OptionalOf<ReturnType<T[K] extends (...args: any[]) => any ? any[any] : never>>
Inherited from
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
| Name | Type |
|---|---|
K | extends string | number | symbol |
Parameters
| Name | Type |
|---|---|
key | K |
...args | Parameters<T[K] extends (...args: any[]) => Promise<any> ? any[any] : never>[] |
Returns
AsyncOptionalOf<ReturnType<T[K] extends (...args: any[]) => any ? any[any] : never>>
Inherited from
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
| Name | Type |
|---|---|
method | () => X |
Returns
MaybePresentOptionalOf<T> | MaybePresentOptionalOf<X>
Inherited from
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
| Name | Type |
|---|---|
method | () => Promise<X> |
Returns
AsyncOptionalOf<T | X>
Inherited from
Defined in
packages/optional/src/Optional.ts:240
defaultGetFlat
▸ defaultGetFlat<X>(method): OptionalOf<T | X>
Type parameters
| Name |
|---|
X |
Parameters
| Name | Type |
|---|---|
method | () => Optional<X> |
Returns
OptionalOf<T | X>
Inherited from
Defined in
packages/optional/src/Optional.ts:232
defaultGetFlatAsync
▸ defaultGetFlatAsync<X>(method): AsyncOptionalOf<T | X>
Type parameters
| Name |
|---|
X |
Parameters
| Name | Type |
|---|---|
method | () => AsyncOptional<X> |
Returns
AsyncOptionalOf<T | X>
Inherited from
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
| Name | Type |
|---|---|
value | X |
Returns
MaybePresentOptionalOf<T> | MaybePresentOptionalOf<X>
Inherited from
Defined in
packages/optional/src/Optional.ts:221
filter
▸ filter(predicate): Optional<T>
Example
Will remove a value that does not satisfy the predicate.
tsOptional.of(5).filter(n => n > 5) // AbsentOptional<number>Optional.of(5).filter(n => n === 5) // PresentOptional<number>
Parameters
| Name | Type |
|---|---|
predicate | (value: T) => boolean |
Returns
Optional<T>
Overrides
Defined in
packages/optional/src/Optional.ts:340
filterNot
▸ filterNot<X>(predicate): Optional<Exclude<T, X>>
Type parameters
| Name |
|---|
X |
Parameters
| Name | Type |
|---|---|
predicate | (value: T) => value is X |
Returns
Optional<Exclude<T, X>>
Overrides
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
tsOptional.of('Hello').map(s => s.toUpperCase()) // Optional<"HELLO">Optional.of(null).map(s => s.toUpperCase()) // AbsentOptional<string>
Type parameters
| Name |
|---|
X |
Parameters
| Name | Type |
|---|---|
transform | (value: T) => Optional<X> |
Returns
Optional<X>
Overrides
Defined in
packages/optional/src/Optional.ts:367
flatMapAsync
▸ flatMapAsync<X>(transform): AsyncOptional<X>
Type parameters
| Name |
|---|
X |
Parameters
| Name | Type |
|---|---|
transform | (value: T) => AsyncOptional<X> | Promise<Optional<X>> |
Returns
Overrides
Defined in
packages/optional/src/Optional.ts:371
get
▸ get(): T
Example
tsOptional.of(5).get() // 5Optional.of(5).get() // throw TypeError
Returns
T
Overrides
Defined in
packages/optional/src/Optional.ts:408
instanceOf
▸ instanceOf<C>(...klasses): Optional<InstanceType<C[number]>>
Type parameters
| Name | Type |
|---|---|
C | extends (...args: any[]) => any[] |
Parameters
| Name | Type |
|---|---|
...klasses | C |
Returns
Optional<InstanceType<C[number]>>
Inherited from
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
tsif (maybeUser.isAbsent()) {maybeUser; // Instance of AbsentOptional<User>}
Returns
this is AbsentOptional<T>
Overrides
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
tsif (maybeUser.isPresent()) {maybeUser; // Instance of PresentOptional<User>}
Returns
this is PresentOptional<T>
Overrides
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
tsOptional.of('Hello').map(s => s.toUpperCase()) // Optional<"HELLO">Optional.of(null).map(s => s.toUpperCase()) // AbsentOptional<string>
Type parameters
| Name |
|---|
X |
Parameters
| Name | Type |
|---|---|
transform | (value: T) => X |
Returns
Optional<NonNullable<X>>
Overrides
Defined in
packages/optional/src/Optional.ts:357
mapAsync
▸ mapAsync<X>(transform): AsyncOptional<NonNullable<X>>
Type parameters
| Name |
|---|
X |
Parameters
| Name | Type |
|---|---|
transform | (value: T) => Promise<X> |
Returns
AsyncOptional<NonNullable<X>>
Overrides
Defined in
packages/optional/src/Optional.ts:361
orElse
▸ orElse<X>(_value): T | X
Example
tsOptional.of(5).orElse('not there') // 5 (typeof string | number)Optional.empty().orElse('not there') // 'not there' (typeof string | number)
Type parameters
| Name |
|---|
X |
Parameters
| Name | Type |
|---|---|
_value | X |
Returns
T | X
Overrides
Defined in
packages/optional/src/Optional.ts:380
orGet
▸ orGet(): T
Example
Use a getter function to return a new value
tsOptional.of(5).orGet(() => 'not there') // 5 (typeof string | number)
Returns
T
Overrides
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
tsOptional.of(5).orThrow(() => { throw new Error('I am thrown'); })Optional.of(5).orThrow(() => new Error('I am thrown'))
Returns
T
Overrides
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
tsOptional.of({name: 'Hello'}).select('name') // Optional<"Hello">
Type parameters
| Name | Type |
|---|---|
K | extends string | number | symbol |
Parameters
| Name | Type |
|---|---|
key | K |
Returns
OptionalOf<T[K]>
Inherited from
Defined in
packages/optional/src/Optional.ts:187
tap
▸ tap(view): Optional<T>
Parameters
| Name | Type |
|---|---|
view | (value: T) => unknown |
Returns
Optional<T>
Inherited from
Defined in
packages/optional/src/Optional.ts:136
tapAsync
▸ tapAsync(view): AsyncOptional<T>
Parameters
| Name | Type |
|---|---|
view | (value: T) => Promise<unknown> |
Returns
Inherited from
Defined in
packages/optional/src/Optional.ts:143
toArray
▸ toArray(): [T]
Returns
[T]
Overrides
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
Defined in
packages/optional/src/Optional.ts:392
unzip
▸ unzip<V>(this): OptionalizeArray<OptionalValue<V>>
Type parameters
| Name | Type |
|---|---|
V | extends Optional<[any, any], V> |
Parameters
| Name | Type |
|---|---|
this | V |
Returns
OptionalizeArray<OptionalValue<V>>
Overrides
Defined in
packages/optional/src/Optional.ts:312
unzip3
▸ unzip3<V>(this): OptionalizeArray<OptionalValue<V>>
Type parameters
| Name | Type |
|---|---|
V | extends Optional<[any, any, any], V> |
Parameters
| Name | Type |
|---|---|
this | V |
Returns
OptionalizeArray<OptionalValue<V>>
Overrides
Defined in
packages/optional/src/Optional.ts:319
zip
▸ zip<X>(...others): Optional<OptionalValuesFromTuple<[Optional<T>, ...X[]]>>
Type parameters
| Name | Type |
|---|---|
X | extends Optional<any>[] |
Parameters
| Name | Type |
|---|---|
...others | X |
Returns
Optional<OptionalValuesFromTuple<[Optional<T>, ...X[]]>>
Overrides
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
| Name | Type |
|---|---|
T | unknown |
Returns
Optional<T>
Inherited from
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
tsOptional.fromJSON(null)Optional.fromJSON('Hello')
Type parameters
| Name | Type |
|---|---|
T | any |
Parameters
| Name | Type |
|---|---|
data | T |
Returns
Optional<T>
Inherited from
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.
tsOptional.of('Hello') // Optional<string>Optional.of<string>(null) // Optional<string>
Type parameters
| Name |
|---|
T |
Parameters
| Name | Type |
|---|---|
value | T | Optional<NonNullable<T>> |
Returns
OptionalOf<T>