Skip to content
This repository was archived by the owner on Feb 21, 2023. It is now read-only.

Commit 49827b7

Browse files
author
valflrt
committed
Add Result class
1 parent 532c015 commit 49827b7

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

src/Result.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
export class Result<T> {
2+
private _value!: T;
3+
4+
private _error?: any = null;
5+
6+
constructor(
7+
executor: (
8+
resolve: (value: T) => void,
9+
reject: (error?: any) => void
10+
) => unknown
11+
) {
12+
try {
13+
executor(
14+
(v) => (this._value = v),
15+
(e: any) => (this._error = e)
16+
);
17+
} catch (e) {
18+
this._error = e;
19+
}
20+
}
21+
22+
/**
23+
* Returns the Result value or executes the callback if an error was encountered
24+
*/
25+
public tryToUnpack(catchError: (error: any) => unknown): T | null {
26+
if (this._error) {
27+
catchError(this._error);
28+
return null;
29+
} else return this._value ?? null;
30+
}
31+
32+
/**
33+
* Returns the Result value (throws if an error was encountered)
34+
*/
35+
public unpack() {
36+
if (this._error) throw this._error;
37+
return this._value;
38+
}
39+
}

0 commit comments

Comments
 (0)