函数重载与实现不兼容



我试图弄清楚为什么我正在查看的某些代码不起作用。我有一个类似于这样的结构:

function getValidity(x: "v1"): boolean;
function getValidity(x: "v2"): { a: number; b: number };
function getValidity(x: any) {
if (x === 'v1') {
return true;
} else {
return { a: 1, b: 2 };
}
}

但是我得到错误

此重载签名与其实现签名不兼容。(2394(

查看示例,我认为这会起作用,但我显然错过了一些东西。这是什么?

function getValidity(x: 'v1'): boolean;
function getValidity(x: 'v2'): { a: number; b: number };
function getValidity(x: 'v1' | 'v2'): boolean | { a: number; b: number } {
if (x === 'v1') {
return true;
} else {
return { a: 1, b: 2 };
}
}
console.log(getValidity('v1'));
console.log(getValidity('v2'));

最新更新