presult
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

presult

presult is a super lightweight, type-safe library for handling result types. It provides an alternative to try-catch with just two classes to handle results: Ok and Err.

Usage

presult introduces two classes Ok and Err. Both classes contain the same fields: ok, error, and message.

Err

The Err class contstructor takes in a mandatory string representing an error message as the first parameter and a second optional number parameter, representing the status of the error. This could be useful to send status codes like 404 or 500.

The following example shows a function that returns an instance of the Err class.

import { Err } from "presult";

async function getUser(userId: number): Promise<Err> {
  return new Err("User not found");
}

const userResult = await getUser(1);
if (userResult.error) {
  console.error(userResult.message); // Logs error message "User not found"
}

The userResult will produce an instance of the Err class, where the error field will be true, and the ok field will be false.

Ok

The Ok class takes in a generic type T, which will be used to correctly type the message field when constructed. The constructor takes in only one parameter of type T and assigns it to the message field, sets the ok field to true and the error field to false.

The following example shows a function that returns an instance of the Ok or Err class..

import { Ok } from "presult";

type TUser = {
  id: number;
  name: string;
};

async function getUser(userId: number): Promise<Ok<TUser>> {
  const user: TUser = await User().findById(userId);
  return new Ok<TUser>(user);
}

const userResult = await getUser(1);
if (userResult.error) {
  console.error(userResult.message); // Logs error message "User not found"
}

// userResult does not contain an error
console.log(userResult.message); // Prints a user of type TUser!

Package Sidebar

Install

npm i presult

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

3.46 kB

Total Files

4

Last publish

Collaborators

  • preemdot