Untitled diff

Created Diff never expires
12 removals
34 lines
11 additions
33 lines
import ow from "ow";
import ow from "ow";


function myMethod(a: string): string;
function myMethod(a: string): string;
function myMethod(a: number): number;
function myMethod(a: number): number;
function myMethod(a: number, b: string): string;
function myMethod(a: number, b: string): [string, string];
function myMethod(a: any, b?: string): any {
function myMethod(a: string | number, b?: string) {
if (ow.isValid(a, ow.string) && ow.isValid(b, ow.undefined)) {
if (ow.isValid(a, ow.string) && ow.isValid(b, ow.undefined)) {
console.log("function myMethod(a: string): string");
console.log("function myMethod(a: string): string");
return a;
return a;
}
}


if (ow.isValid(a, ow.number) && ow.isValid(b, ow.undefined)) {
if (ow.isValid(a, ow.number) && ow.isValid(b, ow.undefined)) {
console.log("function myMethod(a: number): number");
console.log("function myMethod(a: number): number");
return a;
return a;
}
}


if (ow.isValid(a, ow.number) && ow.isValid(b, ow.string)) {
if (ow.isValid(a, ow.number) && ow.isValid(b, ow.string)) {
console.log("function myMethod(a: string, b: string): string");
console.log("function myMethod(a: number, b: string): [string, string]");
return [a, b];
return [a, b];
}
}
}
}


console.log(myMethod("Andrew"));
// function myMethod(a: string): string
// Andrew

console.log(myMethod(123));
console.log(myMethod(123));
// function myMethod(a: number): number
// function myMethod(a: number): number
// 123
// 123


console.log(myMethod("Andrew"));
// function myMethod(a: string): string
// Andrew

console.log(myMethod(123, "Andrew"));
console.log(myMethod(123, "Andrew"));
// function myMethod(a: string, b: string): string
// function myMethod(a: number, b: string): [string, string]
// [123, "Andrew"]
// [123, "Andrew"]