0.2.1 • Published 9 months ago

pseudo-overload v0.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

overload

overload

Pseudo overload via decorators.

Installation

npm install --save pseudo-overload

Example

import { z } from 'zod';
import { OverloadConstructor, Overload } from 'pseudo-overload';

@OverloadConstructor<MyTestClass>(
  [[z.string(), z.number()], function (str: string, num: number) {
    this.propertyA = `${str} - ${num}`;
    this.propertyB = 'empty';
  }],
  [[], function () {
    this.propertyA = 'empty';
    this.propertyB = 'provided no params'
  }]
)
export class MyTestClass {
  propertyA: string;
  propertyB: string;

  constructor();
  constructor(str: number, num: string);
  constructor(str: string, num: number);
  constructor(...args: any[]) { }

  foo(str: number): string;
  foo(str: string): string;
  @Overload<MyTestClass, string>(
    [[z.string()], function (str: string) {
      return `A String ${str}`;
    }],
  )
  foo(...args: any[]): any { }

  bar(str: string, num?: number): string;
  @Overload<MyTestClass, string>(
    [[z.string(), z.number()], function (str: string, num: number) {
      return `A String ${str} And A Number ${num}`;
    }],
    [[z.string()], function (str: string | null) {
      return `A String ${str}`;
    }],
  )
  bar(...args: any[]): any { }
}
0.2.1

9 months ago

0.2.0

9 months ago

0.1.1

9 months ago

0.1.0

9 months ago