Skip to content

Commit

Permalink
DOC: Add preview to README
Browse files Browse the repository at this point in the history
  • Loading branch information
ahme-dev committed May 31, 2023
1 parent e4d904c commit e8b5423
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
36 changes: 23 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,26 @@

# 📛 TryResult

A typescript library to get rid of try catches, and replace them with result types, inspired by Rust and Go error handling.
A typescript library to get rid of try catches, and replace them with result types, inspired by Rust and Go error handling.

![preview picture](./preview.jpg)

Providing simple, easier, and more elegeant error handling, TryResult gives you functions that act as wrappers and catch errors in your own functions.

It also currently provides functions to assert if a result has an error in it, and to use a default value in case of errors.

<br>

## Install

As with any npm package:

```sh
npm i tryresult
```

Or use Yarn:

```sh
yarn add tryresult
```
Expand All @@ -30,41 +34,47 @@ yarn add tryresult
## Usage

Import from the package:

```typescript
import { tryAsync, isError } from "tryresult";
```

Wrap your async function with ```tryAsync```:
Wrap your async function with `tryAsync`:

```typescript
let users = await tryAsync(
// get a list of users from the database
db.user.findMany()
db.user.findMany(),
);
```
This will make the ```users``` variable be of type ```T | Error```, meaning it can be either a value or an error (a union of types).

Then check for error in the variable with ```isError```, and then handle the error:
This will make the `users` variable be of type `T | Error`, meaning it can be either a value or an error (a union of types).

Then check for error in the variable with `isError`, and then handle the error:

```typescript
if (isError(users)) {
return "Could not get users from db";
}
```
This is a type guard and all code after the ```isError``` will consider result's type to be ```T```.

This is a type guard and all code after the `isError` will consider result's type to be `T`.

**[v1.2.x onwards]**

Let's say you're fetching something like a user's role from the db:

```typescript
const result = await tryAsync(
db.user.find(id).role
)
const result = await tryAsync(db.user.find(id).role);
```

If you want to get the value and set a default value in case of error, you can use ``okOr`` on the result:
If you want to get the value and set a default value in case of error, you can use `okOr` on the result:

```typescript
const role = okOr(result, "guestUser")
const role = okOr(result, "guestUser");
```
Now ``role`` is gonna be either the value from the db, or if there was an error, ``"guestUser"``.

Now `role` is gonna be either the value from the db, or if there was an error, `"guestUser"`.

<br>

Expand Down
Binary file added preview.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit e8b5423

Please sign in to comment.