Skip to content

Type-Safe Errors for TypeScript. One file repo!

Notifications You must be signed in to change notification settings

mnickw/dont-throw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Usage

Return defined error instead of throwing/catching. Npm package? Bro, it's a 22-lines file, just copy it.

import { Result, ok, err, defineError } from "./errors";

export const NegativeIndexError = defineError(
    "NegativeIndexError",
    ({ index }: { index: number }) => `Index must be non-negative, got ${index}`
);
export type GetItemsError = InstanceType<typeof NegativeIndexError> | ... other errors;

function getItem(xs: number[], index: number): Result<number, GetItemsError> {
    if (index < 0) {
        return err(new NegativeIndexError({ index }));
    }

    return ok(xs[index]);
}

const result = getItem([1, 2, 3], -1);

if (!result.ok) {
    if (result.error instanceof NegativeIndexError) {
        // fully typed:
        console.log(result.error.index); // number
        console.log(result.error.message);
    }
}

About

Type-Safe Errors for TypeScript. One file repo!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published