【发布时间】:2014-03-09 03:35:21
【问题描述】:
我正在尝试使用 Typescript 重载方法。似乎 Java 或 C# 中通常的重载方式不适用于 Typescript。我不能这样做:
public sayHello(): string {
var partialMessage = this.fullName + " says hello to ";
return partialMessage + "Unknown";
}
public sayHello(name: string) {
var partialMessage = this.fullName + " says hello to ";
return partialMessage + obj;
}
我四处寻找,发现我必须这样做:
public sayHello():string;
public sayHello(name: string):string;
public sayHello(person:Person):string;
public sayHello(obj?: any) {
var partialMessage = this.fullName + " says hello to ";
if(typeof obj === "string") {
return partialMessage + obj;
} else if(obj instanceof Person) {
return partialMessage + (<Person>obj).fullName;
} else {
return partialMessage + "Unknown";
}
}
这种方法对我来说似乎很不整洁且难以维护,因为我将所有内容都集中到一个方法中并使用 if/else 语句划分逻辑。
有没有更好的方法可以在 Typescript 中进行方法重载?
【问题讨论】:
-
@WiredPrairie 我知道如何在 Typescript 中重载方法。事实上,我已经在我的问题中展示了如何做到这一点。我的问题是在 Typescript 中是否有更好的方法来做到这一点。我只是不确定我是否遗漏了什么,因为在 TS 中重载方法的方式对我来说似乎不方便。
-
我仍然建议这是相同的答案,只是以稍微不同的方式提出问题。
标签: javascript typescript overloading