根据规范,Typescript确实支持方法重载,但是它很笨拙,并且包含许多手动检查参数类型的工作。我认为这主要是因为在纯Javascript中最接近方法重载的地方还包括检查,并且Typescript尝试不修改实际的方法主体,以避免任何不必要的运行时性能成本。
如果我对它的理解正确,则必须首先为每个重载编写一个方法声明,然后是 一个 检查其参数以确定调用哪个重载的方法实现。实现的签名必须与所有重载兼容。
class TestClass { someMethod(stringParameter: string): void; someMethod(numberParameter: number, stringParameter: string): void; someMethod(stringOrNumberParameter: any, stringParameter?: string): void { if (stringOrNumberParameter && typeof stringOrNumberParameter == "number") alert("Variant #2: numberParameter = " + stringOrNumberParameter + ", stringParameter = " + stringParameter); else alert("Variant #1: stringParameter = " + stringOrNumberParameter); }}


