Skip to content

Commit e84064c

Browse files
committed
update result type to use tags
1 parent db9fd31 commit e84064c

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

packages/aidbox-client/src/result.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
type Ok<T> = {
2+
ok: true;
23
value: T;
34
isOk: () => this is Ok<T>;
45
isErr: () => this is Err<never>;
@@ -7,7 +8,8 @@ type Ok<T> = {
78
};
89

910
type Err<E> = {
10-
error: E;
11+
ok: false;
12+
value: E;
1113
isOk: () => this is Ok<never>;
1214
isErr: () => this is Err<E>;
1315
map: <U>(f: (value: never) => U) => Result<never, E>;
@@ -17,6 +19,7 @@ type Err<E> = {
1719
export type Result<T, E> = Ok<T> | Err<E>;
1820

1921
export const Ok = <T>(value: T): Result<T, never> => ({
22+
ok: true,
2023
value,
2124
isOk: (): this is Ok<T> => true,
2225
isErr: (): this is Err<never> => false,
@@ -25,7 +28,8 @@ export const Ok = <T>(value: T): Result<T, never> => ({
2528
});
2629

2730
export const Err = <E>(error: E): Result<never, E> => ({
28-
error,
31+
ok: false,
32+
value: error,
2933
isOk: (): this is Ok<never> => false,
3034
isErr: (): this is Err<E> => true,
3135
map: <U>(_f: (value: never) => U) => Err(error),

packages/aidbox-client/test/result.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,29 +39,29 @@ describe("Result type", () => {
3939
expect(result.isOk()).toBe(false);
4040
expect(result.isErr()).toBe(true);
4141
if (result.isErr())
42-
expect(result.error).toBe(42);
42+
expect(result.value).toBe(42);
4343
});
4444
it("should not map", () => {
4545
const result = Err(26);
4646
const newResult = result.map((x) => x + 1);
4747
expect(newResult.isOk()).toBe(false);
4848
expect(newResult.isErr()).toBe(true);
4949
if (newResult.isErr())
50-
expect(newResult.error).toBe(26);
50+
expect(newResult.value).toBe(26);
5151
expect(result.isErr()).toBe(true);
5252
if (result.isErr())
53-
expect(result.error).toBe(26);
53+
expect(result.value).toBe(26);
5454
});
5555
it("should mapErr", () => {
5656
const result = Err("foo");
5757
const newResult = result.mapErr((x) => x + "bar");
5858
expect(newResult.isOk()).toBe(false);
5959
expect(newResult.isErr()).toBe(true);
6060
if (newResult.isErr())
61-
expect(newResult.error).toBe("foobar");
61+
expect(newResult.value).toBe("foobar");
6262
expect(result.isErr()).toBe(true);
6363
if (result.isErr())
64-
expect(result.error).toBe("foo");
64+
expect(result.value).toBe("foo");
6565
});
6666
});
6767
});

0 commit comments

Comments
 (0)