gpt4 book ai didi

带箭头功能的 typescript 重载方法

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:18 31 4
gpt4 key购买 nike

有人知道如何在箭头函数上使用方法重载吗?

foo(args: string): string
foo(args: number): number
foo(args: string | number): string | number {
if (typeof args === "string") {
return "string"
}
return 1
}

试过了但是不行

foo: {
(args: string): string;
(args: number): number;
} = (args: string | number): string | number => {
if (typeof args === "string") {
return "string"
}
return 1
}

最佳答案

箭头函数不支持重载。来自language specification :

The descriptions of function declarations provided in chapter 6 apply to arrow functions as well, except that arrow functions do not support overloading.

当你写作时

foo: {
(args: string): string;
(args: number): number;
}

那么你就不会重载。你实际上说 foo 是一个可以采用其中一种形式(或者两种形式)的函数。箭头函数

(args: string | number): string | number =>

违反了该限制,因为它是单个函数(不是重载函数)和 string | number 表示您可以在需要字符串时返回数字。

正如 artem 已经提出的那样,将返回类型更改为 any 或交集类型可以解决问题。但这与重载不同,因为编译器不会在签名之间进行选择。您实际上只有一个:箭头函数。

关于带箭头功能的 typescript 重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50752853/

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