Skip to content

Commit

Permalink
Merge pull request #2 from yajamon/feature/unwrap
Browse files Browse the repository at this point in the history
unwrap()の追加
  • Loading branch information
yajamon authored Feb 9, 2020
2 parents efa7c41 + 47330e8 commit 95d5ed5
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 3 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@yajamon/result.ts",
"version": "0.1.1",
"version": "0.2.0",
"description": "Type definitions and simple functions inspired by Rust's Result.",
"main": "lib/main.js",
"scripts": {
Expand Down
15 changes: 14 additions & 1 deletion src/main.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Err, Ok, Result } from "./main";
import { Err, Ok, Result, unwrap } from "./main";

describe("Ok", () => {
it("is return ResultOk", () => {
Expand All @@ -23,3 +23,16 @@ describe("Err", () => {
}
});
});

describe("unwrap()", () => {
it("throw when ResultErr", () => {
expect(() => {
unwrap(Err("error"));
}).toThrow("error");
});

it("return value when ResultOk", () => {
const ok = Ok("success");
expect(unwrap(ok)).toBe("success");
});
});
7 changes: 7 additions & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,10 @@ export const Err: <E>(error: E) => ResultErr<E> = e => ({
isError: true,
error: e
});

export const unwrap: <T, E>(result: Result<T, E>) => T = result => {
if (result.isError) {
throw result.error;
}
return result.value;
};

0 comments on commit 95d5ed5

Please sign in to comment.