Skip to content

Commit 4c68e05

Browse files
authored
Merge pull request #16 from yajamon/fix/signature
シグネチャの更新
2 parents a885442 + e3b184d commit 4c68e05

File tree

4 files changed

+36
-7
lines changed

4 files changed

+36
-7
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@ export type Result<T, E> = ResultOk<T> | ResultErr<E>;
2626
## Usage
2727

2828
```ts
29-
import { Result, Ok, Err } from "@yajamon/result.ts"
29+
import { Result, ok, err } from "@yajamon/result.ts"
3030

3131
class Foo {
3232
static create(input:string): Result<Foo, Error> {
3333
if (validation(input)) {
3434
const foo = new Foo();
3535
// ...
36-
return Ok(foo);
36+
return ok(foo);
3737
} else {
38-
return Err(new Error("error message"));
38+
return err(new Error("error message"));
3939
}
4040
}
4141

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@yajamon/result.ts",
3-
"version": "0.2.1",
3+
"version": "0.3.0",
44
"description": "Type definitions and simple functions inspired by Rust's Result.",
55
"main": "lib/main.js",
66
"scripts": {

src/main.test.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Err, Ok, Result, unwrap } from "./main";
1+
import { err, Err, Ok, ok, Result, unwrap } from "./main";
22

33
describe("Ok", () => {
44
it("is return ResultOk", () => {
@@ -24,6 +24,30 @@ describe("Err", () => {
2424
});
2525
});
2626

27+
describe("ok", () => {
28+
it("is return ResultOk", () => {
29+
const success = ok("success") as Result<string, never>;
30+
if (success.isError === false) {
31+
// isError を確認することで、スコープ内の型を ResultからResultOkに推定できる
32+
expect(success.value).toEqual("success");
33+
} else {
34+
throw "Wrong!";
35+
}
36+
});
37+
});
38+
39+
describe("err", () => {
40+
it("is return ResultErr", () => {
41+
const error = err("error") as Result<never, string>;
42+
if (error.isError) {
43+
// isError を確認することで、スコープ内の型を ResultからResultErrに推定できる
44+
expect(error.error).toEqual("error");
45+
} else {
46+
throw "Wrong!";
47+
}
48+
});
49+
});
50+
2751
describe("unwrap()", () => {
2852
it("throw when ResultErr", () => {
2953
expect(() => {

src/main.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,20 @@ export type ResultErr<E> = {
1010

1111
export type Result<T, E> = ResultOk<T> | ResultErr<E>;
1212

13-
export const Ok: <T>(value: T) => ResultOk<T> = (v) => ({
13+
export const ok: <T>(value: T) => ResultOk<T> = (v) => ({
1414
isError: false,
1515
value: v,
1616
});
17-
export const Err: <E>(error: E) => ResultErr<E> = (e) => ({
17+
export const err: <E>(error: E) => ResultErr<E> = (e) => ({
1818
isError: true,
1919
error: e,
2020
});
2121

22+
/** @deprecated Use `ok(result: T)` instead */
23+
export const Ok = ok;
24+
/** @deprecated Use `err(error: E)` instead */
25+
export const Err = err;
26+
2227
export const unwrap: <T, E>(result: Result<T, E>) => T = (result) => {
2328
if (result.isError) {
2429
throw result.error;

0 commit comments

Comments
 (0)