Ƭ Err: Error
Represents an error
Ƭ Ok<A
>: A
extends Error
? never
: A
Represents the successful result of an operation
Name |
---|
A |
Could represent both an Error Err
or a successful result of an operation Ok<a>
Name |
---|
A |
▸ err(a
): Error
Returns an Err
Example
import { Result } from 'tiinvo';
Result.err(10) instanceof Error // true
Result.err(new TypeError('aaaa')) instanceof Error // true
Result.err({}) instanceof Error // true
Result.err(10n) instanceof Error // true
Result.err([10, 20, 30]) instanceof Error // true
Since
3.8.0
Name | Type |
---|---|
a |
unknown |
Error
▸ isErr(x
): x is Error
Checks if a value is Err
Example
import { Result } from 'tiinvo';
Result.isErr(10) // false
Result.isErr(new TypeError('aaaa')) // true
Since
4.0.0
Name | Type | Description |
---|---|---|
x |
unknown |
the value to check |
x is Error
true if x
is Err
, false otherwise
▸ isOk<A
>(x
): x is Ok<A>
Checks if a value is Ok
Example
import { Result } from 'tiinvo';
Result.isOk(10) // true
Result.isOk(new TypeError('aaaa')) // false
Since
4.0.0
Name |
---|
A |
Name | Type |
---|---|
x |
T <A > |
x is Ok<A>
true if x
is Ok<A>
, false otherwise
▸ isOkOf<A
>(g
): (x
: unknown
) => x is A
Checks if a value is Ok<A>
import { Num, Result } from 'tiinvo';
const guard = Result.isOkOf(Num.guard);
guard(10) // true
guard("hello") // false
guard(new TypeError('aaaa')) // false
Since
4.0.0
Name | Description |
---|---|
A |
the type |
Name | Type | Description |
---|---|---|
g |
Guardable <A > |
the type guard |
fn
the Guard
▸ (x
): x is A
Name | Type |
---|---|
x |
unknown |
x is A
▸ cmp<A
>(cmp
, a
, b
): ComparableResult
Compares two results T<A>
by a given Comparable<A>
.
a
is Err
and b
is Ok
returns -1, else if both are Err
returns 0, else returns 1Example
import { Str, Result } from 'tiinvo';
Result.cmp(Str.cmp, "a", "a") // 0
Result.cmp(Str.cmp, "a", "b") // -1
Result.cmp(Str.cmp, "b", "a") // 1
Result.cmp(Str.cmp, new Error(), new Error()) // 0
Result.cmp(Str.cmp, new Error(), "a") // -1
Result.cmp(Str.cmp, "a", new Error()) // 1
Since
4.0.0
Name | Description |
---|---|
A |
the type |
Name | Type | Description |
---|---|---|
cmp |
Comparable <A > |
the comparer function |
a |
T <A > |
first value |
b |
T <A > |
last value |
a
is less than b
a
is same of b
a
is greater than b
.▸ cmp<A
>(cmp
, a
, b
): ComparableResult
Compares two results T<A>
by a given ComparableModule<A>
.
a
is Err
and b
is Ok
returns -1, else if both are Err
returns 0, else returns 1Example
import { Str, Result } from 'tiinvo';
Result.cmp(Str, "a", "a") // 0
Result.cmp(Str, "a", "b") // -1
Result.cmp(Str, "b", "a") // 1
Result.cmp(Str, new Error(), new Error()) // 0
Result.cmp(Str, new Error(), "a") // -1
Result.cmp(Str, "a", new Error()) // 1
Since
4.0.0
Name | Description |
---|---|
A |
the type |
Name | Type | Description |
---|---|---|
cmp |
ComparableModule <A > |
the comparer function |
a |
T <A > |
first value |
b |
T <A > |
last value |
a
is less than b
a
is same of b
a
is greater than b
.▸ cmp<A
>(cmp
, a
): Unary
<T
<A
>, ComparableResult
>
Returns a unary function which compares two results T<A>
by a given Comparable<A>
.
If a
is Err
and b
is Ok
returns -1, else if both are Err
returns 0, else returns 1
Example
import { Str, Result } from 'tiinvo';
const cmp = Result.cmp(Str.cmp, "a");
cmp("a") // 0
cmp("b") // -1
cmp("a") // 1
cmp(new Error()) // 1
Since
4.0.0
Name | Description |
---|---|
A |
the type |
Name | Type | Description |
---|---|---|
cmp |
Comparable <A > |
the comparer function |
a |
T <A > |
first value |
Unary
<T
<A
>, ComparableResult
>
the unary function which returns
a
is less than b
a
is same of b
a
is greater than b
.▸ cmp<A
>(cmp
, a
): Unary
<T
<A
>, ComparableResult
>
Returns a unary function which compares two results T<A>
by a given ComparableModule<A>
.
If a
is Err
and b
is Ok
returns -1, else if both are Err
returns 0, else returns 1
Example
import { Str, Result } from 'tiinvo';
const cmp = Result.cmp(Str, "a");
cmp("a") // 0
cmp("b") // -1
cmp("a") // 1
cmp(new Error()) // 1
Since
4.0.0
Name | Description |
---|---|
A |
the type |
Name | Type | Description |
---|---|---|
cmp |
ComparableModule <A > |
the comparer module |
a |
T <A > |
first value |
Unary
<T
<A
>, ComparableResult
>
the unary function which returns
a
is less than b
a
is same of b
a
is greater than b
.▸ cmp<A
>(cmp
): Binary
<T
<A
>, T
<A
>, ComparableResult
>
Returns a binary function which compares two results T<A>
by a given Comparable<A>
.
If a
is Err
and b
is Ok
returns -1, else if both are Err
returns 0, else returns 1
Example
import { Str, Result } from 'tiinvo';
const cmp = Result.cmp(Str.cmp);
cmp("a", "a") // 0
cmp("a", "b") // -1
cmp("b", "a") // 1
cmp("a", new Error()) // 1
cmp(new Error(), "a") // -1
cmp(new Error(), new Error()) // 0
Since
4.0.0
Name | Description |
---|---|
A |
the type |
Name | Type | Description |
---|---|---|
cmp |
Comparable <A > |
the comparer function |
Binary
<T
<A
>, T
<A
>, ComparableResult
>
the binary function which returns
a
is less than b
a
is same of b
a
is greater than b
.▸ cmp<A
>(cmp
): Binary
<T
<A
>, T
<A
>, ComparableResult
>
Returns a binary function which compares two results T<A>
by a given ComparableModule<A>
.
If a
is Err
and b
is Ok
returns -1, else if both are Err
returns 0, else returns 1
Example
import { Str, Result } from 'tiinvo';
const cmp = Result.cmp(Str);
cmp("a", "a") // 0
cmp("a", "b") // -1
cmp("b", "a") // 1
cmp("a", new Error()) // 1
cmp(new Error(), "a") // -1
cmp(new Error(), new Error()) // 0
Since
4.0.0
Name | Description |
---|---|
A |
the type |
Name | Type | Description |
---|---|---|
cmp |
ComparableModule <A > |
the comparer module |
Binary
<T
<A
>, T
<A
>, ComparableResult
>
the binary function which returns
a
is less than b
a
is same of b
a
is greater than b
.▸ eq<A
>(eq
, a
, b
): boolean
Returns true if two results are equal, false otherwise.
import { Num, Result } from 'tiinvo';
Result.eq(Num.eq, 0, 0) // true
Result.eq(Num.eq, new Error(), new TypeError()) // true
Result.eq(Num.eq, new Error(), 0) // false
Result.eq(Num.eq, 0, new Error()) // false
Result.eq(Num.eq, 1_000_000, 0) // false
Since
4.0.0
Name | Description |
---|---|
A |
the value type |
Name | Type | Description |
---|---|---|
eq |
Equatable <A > |
the Equatable functor |
a |
T <A > |
the left compared value |
b |
T <A > |
the right compared value |
boolean
true if a
equals to b
▸ eq<A
>(eq
, a
, b
): boolean
Returns true if two results are equal, false otherwise.
import { Num, Result } from 'tiinvo';
Result.eq(Num, 0, 0) // true
Result.eq(Num, new Error(), new TypeError()) // true
Result.eq(Num, new Error(), 0) // false
Result.eq(Num, 0, new Error()) // false
Result.eq(Num, 1_000_000, 0) // false
Since
4.0.0
Name | Description |
---|---|
A |
the value type |
Name | Type | Description |
---|---|---|
eq |
EquatableModule <A > |
the Equatable module |
a |
T <A > |
the left compared value |
b |
T <A > |
the right compared value |
boolean
true if a
equals to b
▸ eq<A
>(eq
, a
): Unary
<T
<A
>, boolean
>
Returns a unary function which returns true if two results are equal, false otherwise.
import { Num, Result } from 'tiinvo';
const is0 = Result.eq(Num.eq, 0)
Result.eq(0) // true
Result.eq(new TypeError()) // false
Result.eq(new Error()) // false
Result.eq(1_000_000) // false
Since
4.0.0
Name | Description |
---|---|
A |
the value type |
Name | Type | Description |
---|---|---|
eq |
Equatable <A > |
the Equatable functor |
a |
T <A > |
the left compared value |
the unary function
▸ eq<A
>(eq
, a
): Unary
<T
<A
>, boolean
>
Returns a unary function which returns true if two results are equal, false otherwise.
import { Num, Result } from 'tiinvo';
const is0 = Result.eq(Num, 0)
Result.eq(0) // true
Result.eq(new TypeError()) // false
Result.eq(new Error()) // false
Result.eq(1_000_000) // false
Since
4.0.0
Name | Description |
---|---|
A |
the value type |
Name | Type | Description |
---|---|---|
eq |
EquatableModule <A > |
the Equatable functor |
a |
T <A > |
the left compared value |
the unary function
▸ eq<a
>(eq
): Binary
<T
<a
>, T
<a
>, boolean
>
Returns a binary function which returns true if two results are equal, false otherwise.
import { Num, Result } from 'tiinvo';
const is0 = Result.eq(Num.eq)
Result.eq(0, 0) // true
Result.eq(new TypeError(), new Error()) // true
Result.eq(0, new Error()) // false
Result.eq(1_000, 1_000) // true
Since
4.0.0
Name |
---|
a |
Name | Type | Description |
---|---|---|
eq |
Equatable <a > |
the Equatable functor |
the binary function
▸ eq<a
>(eq
): Binary
<T
<a
>, T
<a
>, boolean
>
Returns a binary function which returns true if two results are equal, false otherwise.
import { Num, Result } from 'tiinvo';
const is0 = Result.eq(Num)
Result.eq(0, 0) // true
Result.eq(new TypeError(), new Error()) // true
Result.eq(0, new Error()) // false
Result.eq(1_000, 1_000) // true
Since
4.0.0
Name |
---|
a |
Name | Type | Description |
---|---|---|
eq |
EquatableModule <a > |
the Equatable module |
the binary function
▸ filter<A
>(f
, a
): T
<A
>
Returns Ok<A>
if the value a
is Ok<A>
and the predicate is satisfied, otherwise returns Err
.
import { Result, Num } from 'tiinvo';
Result.filter(Num.gt(1), 1) // Error("Value did not pass filter")
Result.filter(Num.gt(1), 2) // 2
Result.filter(Num.gt(1), new TypeError()) // Error("Value did not pass filter")
Since
4.0.0
Name | Description |
---|---|
A |
the value type |
Name | Type | Description |
---|---|---|
f |
Filterable <A > |
the Filterable functor |
a |
T <A > |
the value to filter |
T
<A
>
T<A>
if the Filterable has been satisfied
▸ filter<A
>(f
): Unary
<T
<A
>, T
<A
>>
Returns a unary function which checks if Result.T<A>
is Ok<A>
and the predicate is satisfied, otherwise returns Err
.
import { Result, Num } from 'tiinvo';
const f = Result.filter(Num.gt(1));
f(1) // Error("Value did not pass filter")
f(2) // 2
f(new TypeError()) // Error("Value did not pass filter")
Since
4.0.0
Name | Description |
---|---|
A |
the value type |
Name | Type | Description |
---|---|---|
f |
Filterable <A > |
the Filterable functor |
the unary function
▸ map<A
, B
>(m
): (a
: T
<A
>) => T
<B
>
Maps Result.t<a>
to Result.t<b>
if ok, otherwise returns err
import { Num, Result } from 'tiinvo';
const m = Result.map(Num.add(10))
m(10) // 20
m(new Error('foobar!')) // Error('foobar!')
Since
4.0.0
Name |
---|
A |
B |
Name | Type | Description |
---|---|---|
m |
Mappable <A , B > |
the Mappable functor |
fn
▸ (a
): T
<B
>
Name | Type |
---|---|
a |
T <A > |
T
<B
>
▸ mapOr<a
, b
>(m
, b
): (a
: T
<a
>) => b
Maps Result.t<a>
to Result.t<b>
if ok, otherwise returns b
import { Str, Result } from 'tiinvo';
const map = Result.mapOr(Str.length, 0);
map('hello') // 5
map(new Error()) // 0
Since
4.0.0
Name |
---|
a |
b |
Name | Type |
---|---|
m |
Mappable <a , b > |
b |
b |
fn
▸ (a
): b
Name | Type |
---|---|
a |
T <a > |
b
▸ tryAsync<f
>(f
): (…args
: Parameters
<f
>) => Promise
<T
<ReturnType
<f
>>> extends AnyAsyncFn
? (…args
: Parameters
<f
>) => Promise
<Error
| Awaited
<Ok
<ReturnType
<f
>>>> : (…args
: Parameters
<f
>) => Promise
<T
<ReturnType
<f
>>>
Calls a function f
with it’s arguments and returns a Promise<Result.t<ReturnType<f>>>
import { Result, Num } from 'tiinvo';
const fn = async (arg: number) => {
if (Num.isEven(arg)) {
return arg * 2;
}
throw new Error(`${arg} is not even`);
}
const safe = Result.tryAsync(fn);
await safe(2) // 4
await safe(3) // Error("3 is not even")
Result.isOk(await safe(2)) // true
Result.isErr(await safe(3)) // true
Since
4.0.0
Name | Type |
---|---|
f |
extends AnyAsyncFn |
Name | Type |
---|---|
f |
f |
(…args
: Parameters
<f
>) => Promise
<T
<ReturnType
<f
>>> extends AnyAsyncFn
? (…args
: Parameters
<f
>) => Promise
<Error
| Awaited
<Ok
<ReturnType
<f
>>>> : (…args
: Parameters
<f
>) => Promise
<T
<ReturnType
<f
>>>
▸ trySync<f
>(f
): (…args
: Parameters
<f
>) => T
<ReturnType
<f
>> extends AnyAsyncFn
? (…args
: Parameters
<f
>) => Promise
<Error
| Awaited
<Ok
<ReturnType
<f
>>>> : (…args
: Parameters
<f
>) => T
<ReturnType
<f
>>
Calls a function f
with it’s arguments and returns a Promise<Result.t<ReturnType<f>>>
import { Result, Num } from 'tiinvo';
const fn = (arg: number) => {
if (Num.isEven(arg)) {
return arg * 2;
}
throw new Error(`${arg} is not even`);
}
const safe = Result.trySync(fn);
safe(2) // 4
safe(3) // Error("3 is not even")
Result.isOk(safe(2)) // true
Result.isErr(safe(3)) // true
Since
4.0.0
Name | Type |
---|---|
f |
extends AnyFn |
Name | Type |
---|---|
f |
f |
(…args
: Parameters
<f
>) => T
<ReturnType
<f
>> extends AnyAsyncFn
? (…args
: Parameters
<f
>) => Promise
<Error
| Awaited
<Ok
<ReturnType
<f
>>>> : (…args
: Parameters
<f
>) => T
<ReturnType
<f
>>