【发布时间】:2018-03-29 00:40:44
【问题描述】:
我有一个可以接受对象或值的函数。
export function A( param: string );
export function A({ param }: { param: string }) {
}
但我收到以下错误:
打字稿重载签名与函数不兼容 实施
有什么问题?
export function A( param: string ): void
export function A({ param, ...rest }: { param: string}): void
export function A( param: string | { param: string = "initial", ...rest }) : void{
}
【问题讨论】:
-
您只能在类型声明中定义重载。 Javascript 不支持方法重载,并且 typescript 不知道如何将多个方法编译为一个方法。这意味着实际的实现必须包含一个方法,该方法适用于类型声明中的每个重载签名。
-
@JakeHolzinger 你可以有多个重载,但只有一个实现
-
这不是我说的吗?单个实现必须具有匹配所有重载的签名,因为 typescript 不知道如何自动创建该方法。
-
@JakeHolzinger 抱歉,我从您的评论中了解到,您只能在声明中定义重载,而不能在打字稿中实现具有多个签名的函数。对不起,如果我误解了。
标签: typescript