我正在尝试使用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/ther语句来划分逻辑。
有没有更好的方法可以在Typescript中进行方法重载?
你必须使用第二种形式。JavaScript对函数参数甚至参数的数量没有类型检查。给定名称的函数只能存在一个版本。因此,当TypeScript编译为JavaScript时,它只能为给定的方法创建一个函数。
看见
在TypeScript语言中有方法重载吗?
注意:参数的类型可以是完全不同的类型,与本例不同。
问题内容: 有没有办法用TypeScript语言进行方法重载? 我想实现以下目标: 这是我不想做的一个例子(我真的很讨厌JS中重载hack的那一部分): 问题答案: 根据规范,TypeScript确实支持方法重载,但是它很笨拙,并且包含许多手动检查参数类型的工作。我认为这主要是因为在纯JavaScript中最接近方法重载的地方还包括检查,并且TypeScript尝试不修改实际的方法主体,以避免任何
这可能看起来像是一个原始的问题,也可能是一个简单的实用程序库方法,我不知道。 目标是检查嵌套在两个对象下的布尔字段的值。 我知道这可以在一个中完成。为了可读性,我在这里添加了多个s。 有没有一种方法可以简化上面的语句,并有一个简单的实用程序类,在父对象是否为null时返回的值?
我需要重写执行程序的执行方法,我需要改变线程超过核心池大小的行为,只有当队列已满时才会创建。 然而,在实时应用程序中,这种行为是不可取的,因为它会导致队列中存在的任务无休止地等待。 我已将execute方法更改如下: 尝试实现:核心线程-
问题内容: 我一直像这样处理JavaScript中的可选参数: 有更好的方法吗? 有没有在这种情况下使用会失败的情况? 问题答案: 如果传递了optionalArg,您的逻辑将失败,但评估为false-尝试使用此方法 或另一种习语: 使用任何一种最能传达您意图的习语!