Er det en måte å gjøre metoden overbelastning i Loggfila språk?
Jeg ønsker å oppnå noe som dette:
class TestClass {
someMethod(stringParameter: string): void {
alert(Variant #1: stringParameter = + stringParameter);
}
someMethod(numberParameter: number, stringParameter: string): void {
alert(Variant #2: numberParameter = + numberParameter + , stringParameter = + stringParameter);
}
}
var testClass = new TestClass();
testClass.someMethod(string for v#1);
testClass.someMethod(12345, string for v#2);
Her er et eksempel på hva jeg ikke ønsker å gjøre (jeg hater den delen av overbelastning hack i JS):
class TestClass {
private someMethod_Overload_string(stringParameter: string): void {
// A lot of code could be here... I don't want to mix it with switch or if statement in general function
alert(Variant #1: stringParameter = + stringParameter);
}
private someMethod_Overload_number_string(numberParameter: number, stringParameter: string): void {
alert(Variant #2: numberParameter = + numberParameter + , stringParameter = + stringParameter);
}
private someMethod_Overload_string_number(stringParameter: string, numberParameter: number): void {
alert(Variant #3: stringParameter = + stringParameter + , numberParameter = + numberParameter);
}
public someMethod(stringParameter: string): void;
public someMethod(numberParameter: number, stringParameter: string): void;
public someMethod(stringParameter: string, numberParameter: number): void;
public someMethod(): void {
switch (arguments.length) {
case 1:
if(typeof arguments[0] == string) {
this.someMethod_Overload_string(arguments[0]);
return;
}
return; // Unreachable area for this case, unnecessary return statement
case 2:
if ((typeof arguments[0] == number) &&
(typeof arguments[1] == string)) {
this.someMethod_Overload_number_string(arguments[0], arguments[1]);
}
else if ((typeof arguments[0] == string) &&
(typeof arguments[1] == number)) {
this.someMethod_Overload_string_number(arguments[0], arguments[1]);
}
return; // Unreachable area for this case, unnecessary return statement
}
}
}
var testClass = new TestClass();
testClass.someMethod(string for v#1);
testClass.someMethod(12345, string for v#2);
testClass.someMethod(string for v#3, 54321);













