Playground sample
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);
Typescript does not support function overloading with different number of parameters.
Documentation
says:One trick to achieve what you are trying could be this
class Test {
a(msg: string): string; // overload 1
a(msg: string, ...args: unknown[]): { msg: string, args: unknown[] } // overload2
a(msg: string, ...args: unknown[]): string | { msg: string, args: unknown[] } { // impl
// ...
}
}
new Test().a("test", "a", 1, 2, 3); // { msg: string; args: unknown[]; }
new Test().a("test") // string
我有一个类定义如下。
"预期有1个参数,但得到5个"我如何正确地重载这个方法,为不同的签名提供不同的返回类型?
我有一个类定义如下: class Test { a(msg: string): string; a(msg: string, ...args: unknown[]): string