gpt4 book ai didi

typescript - 无法识别带有扩展运算符的重载方法

转载 作者:行者123 更新时间:2023-12-02 02:52:41 25 4
gpt4 key购买 nike

我有一个类定义如下:

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);

"Expected 1 arguments, but got 5"

如何正确重载此方法以为不同的签名提供不同的返回类型?

最佳答案

函数实现不是所有可用重载的一部分。相反,你可以写:

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

Playground sample

关于typescript - 无法识别带有扩展运算符的重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61699812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com