【发布时间】:2020-08-25 05:30:49
【问题描述】:
我有一个类定义如下:
class Test {
a(msg: string): string;
a(msg: string, ...args: unknown[]): string | { msg: string, args: unknown[]} {
if (args) {
return { msg: msg, args: args };
}
return msg;
}
}
但是,如果我这样做,我会得到编译错误:
new Test().a("test", "a", 1, 2, 3);
“预期有 1 个参数,但得到了 5 个”
我怎样才能正确地重载这个方法来为不同的签名提供不同的返回类型?
【问题讨论】:
-
如果你想让重载工作,你需要为所有函数提供相同数量的参数,对于你的行为,最好选择不同的函数名称