Skip to content

Use rust-like optional and error-handling types API.

License

Notifications You must be signed in to change notification settings

bya2/rusty-container-api

Repository files navigation

Rusty Container API

Use rust-like optional and error-handling types API.

Some methods are missing because necessity and language specifics.

Table of Contents

Features

  • Rust-like Option and Result types
  • Optional type handling
  • Error handling
  • Transformable variants
  • Promise Transformable

Usage

The code below needs to be written as needed.

아래의 코드는 필요시 직접 작성하세요.

Installation

$ pnpm add @bya2/rusty-container-api

Declaring types globally

This code can cause type conflicts, so you'll need to create and insert your own .d.ts file.

export declare global {
  type Option<T> = import("@bya2/rusty-container-api").Option<T>;
  function Some<T>(expr: T): Option<T>;
  const None: Option<any>; // or const None<T>: Option<T>

  type Result<T, E> = import("@bya2/rusty-container-api").Result<T, E>;
  function Ok<T, E>(expr: T): Result<T, E>;
  function Err<T, E>(expr: E): Result<T, E>;
}

Initializing variants

And write that code in your setup file(.js), then import it at the top of your entry point.

import { defineOption, defineResult } from "@bya2/rusty-container-api";
defineOption(); // optional
defineResult(); // optional

Defining types

const a = Some(1) // Option<number>;
const b = None // Option<any>;
const c: Option<number> = None;

const d = Ok(1); // Result<number, unknown>
const e = Err("a"); // Result<unknown, string>
const f: Result<number, Error> = Ok(1);
const g = Err<number, Error>(new Error());

API

Option

Result

Custom Methods

Option Interface

  • resolveOr
  • resolveOrElse
  • transposeAsync
  • equal

Result Interface

  • promise
  • transposeAsync
  • equal

Reference

About

Use rust-like optional and error-handling types API.

Resources

License

Stars

Watchers

Forks

Packages

No packages published