Skip to content

A simple and lightweight library for overloading functions in TypeScript.

License

Notifications You must be signed in to change notification settings

JuerGenie/valiload

Repository files navigation

valiload

A simple and lightweight library for overloading functions in TypeScript.

中文版本

What is valiload?

valiload is a TypeScript library that allows you to create functions that can be overloaded with different argument schemas. It provides a convenient way to define multiple versions of a function that can handle different types and combinations of arguments.

valiload means "validate/valibot" + "overload".

Usage

To use valiload, follow these steps:

  1. Install valiload as a dependency in your project:
npm install valiload valibot
  1. Import valiload into your TypeScript file:
import * as v from 'valiload';
  1. Define your overloaded function using the valiload syntax:
const MailSchema = v.object({
  to: v.pipe(
    v.string(),
    v.trim(),
    v.email()
  ),
  subject: v.string(),
  body: v.string(),
});

const overloadedFn = v.valiload()
  .overload([v.string(), v.number()], (a, b) => {
   // Function implementation for string and number arguments
  })
  .overload([v.number(), v.string()], (a, b) => {
   // Function implementation for number and string arguments
  })
  .overload([MailSchema], (mail) => {
   // Function implementation for MailSchema arguments
  });

const overloadedWithFallback = v
  .valiload(() => {
    // Fallback function implementation
  })
  .overload([v.string(), v.number()], (a, b) => {
   // Function implementation for string and number arguments
  });
  1. Call the overloaded function with the appropriate arguments:
overloadedFn("hello", 123); // Calls the first overload
overloadedFn(123, "hello"); // Calls the second overload
overloadedFn({ to: "[email protected]", subject: "Hello", body: "World" }); // Calls the third overload

overloadedWithFallback("hello", 123); // Calls the first overload
overloadedWithFallback(123, "hello"); // Calls the fallback function

The function will execute the implementation that matches the types and order of the arguments.

  1. Enjoy the flexibility of overloaded functions in TypeScript!

For more information on how to define schemas and handle different argument types, refer to the valibot documentation, and for more examples, check out the test or examples in the valiload repository.

About

A simple and lightweight library for overloading functions in TypeScript.

Resources

License

Stars

Watchers

Forks

Releases

No releases published