Typescript 尝试调用重载函数时出现类型检查错误

Typescript 尝试调用重载函数时出现类型检查错误,typescript,Typescript,我有一个重载函数: function find(id: number); function find(id: string); function find(id: number | string) { // do stuff } 但当我试着这样称呼它时,我得到了一个错误: function test(id: string | number) { return find(id); } 错误-没有与此调用匹配的重载。有什么解决方法吗?重载的最后一行用于将两个重载签名合并到一个实现中。它本

我有一个重载函数:

function find(id: number);
function find(id: string);
function find(id: number | string) {
  // do stuff
}
但当我试着这样称呼它时,我得到了一个错误:

function test(id: string | number) {
  return find(id);
}

错误-
没有与此调用匹配的重载
。有什么解决方法吗?

重载的最后一行用于将两个重载签名合并到一个实现中。它本身并不被认为是一个重载签名,所以这就是为什么会出现错误。听起来很傻,如果你想允许
字符串
数字
数字|字符串
,你只需复制最后一行并使其成为额外的重载即可

function find(id: number);
function find(id: string);
function find(id: number | string);
function find(id: number | string) {
  // do stuff
}