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!

/presult/

    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