我有一个重载的函数:
function find(id: number);
function find(id: string);
function find(id: number | string) {
// do stuff
}
但是当我尝试这样称呼它时,出现错误:
function test(id: string | number) {
return find(id);
}
错误-No overload matches this call
。有什么解决方法吗?
答案 0 :(得分:1)
重载的最后一行用于将两个重载签名合并为一个实现。它不被认为是其自身的过载签名,所以这就是您得到错误的原因。听起来很愚蠢,如果您想允许string
,number
,和 number | string
,则只需复制最后一行,并使其额外加重。
function find(id: number);
function find(id: string);
function find(id: number | string);
function find(id: number | string) {
// do stuff
}