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

时间:2020-10-01 11:23:08

标签: typescript

我有一个重载的函数:

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。有什么解决方法吗?

1 个答案:

答案 0 :(得分:1)

重载的最后一行用于将两个重载签名合并为一个实现。它不被认为是其自身的过载签名,所以这就是您得到错误的原因。听起来很愚蠢,如果您想允许stringnumber number | string,则只需复制最后一行,并使其额外加重。

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

TS Playground Link