Skip to content

Commit a5e51d4

Browse files
feature: this commit introduces error and result classes for error handling
1 parent 5236188 commit a5e51d4

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

UIs/Landing/patterns/error.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export class Error {
2+
public constructor(public code: string, public description: string) { }
3+
4+
public static readonly None = new Error("", "");
5+
public static readonly Unknown = new Error("Unknown", "An unknown error has occurred.");
6+
7+
public static from(code: string, description: string): Error {
8+
return new Error(code, description);
9+
}
10+
}

UIs/Landing/patterns/result.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Error } from "./error";
2+
3+
export class Result<TData = void> {
4+
public readonly isSuccess: boolean;
5+
public readonly isFailure: boolean;
6+
7+
public readonly error: Error;
8+
public readonly value?: TData;
9+
10+
private constructor(isSuccess: boolean, value?: TData, error: Error = Error.None) {
11+
this.isSuccess = isSuccess;
12+
this.isFailure = !isSuccess;
13+
this.error = error;
14+
this.value = value;
15+
}
16+
17+
public static success<TData>(value: TData): Result<TData> {
18+
return new Result<TData>(true, value, Error.None);
19+
}
20+
21+
public static failure<TData>(error: Error): Result<TData> {
22+
return new Result<TData>(false, undefined, error);
23+
}
24+
}

0 commit comments

Comments
 (0)