Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript部分接口重载选择了错误的重载_Typescript - Fatal编程技术网

Typescript部分接口重载选择了错误的重载

Typescript部分接口重载选择了错误的重载,typescript,Typescript,当我试图用部分接口重载来定义重载my函数时,typescript选择了错误的重载 接口参数{ _id:字符串; 名称:字符串; } 接口结果{ _id:字符串; 名称:字符串; } 函数myFunction(arg:Args):结果; 函数myFunction(参数:部分):部分{ 返回arg; } //类型为“{u id:string;}”的参数不能分配给类型为“Args”的参数。 //类型“{u id:string;}”中缺少属性“name”,但类型“Args”中需要该属性 myFuncti

当我试图用部分接口重载来定义重载my函数时,typescript选择了错误的重载

接口参数{
_id:字符串;
名称:字符串;
}
接口结果{
_id:字符串;
名称:字符串;
}
函数myFunction(arg:Args):结果;
函数myFunction(参数:部分):部分{
返回arg;
}
//类型为“{u id:string;}”的参数不能分配给类型为“Args”的参数。
//类型“{u id:string;}”中缺少属性“name”,但类型“Args”中需要该属性
myFunction({u id:'aa'});
试图使用
myFunction({u id:'aa'}作为部分函数)没有帮助


我如何才能做到这一点?

最后一个签名是实现签名,而不是可公开访问的签名的一部分。所以你的函数真的有一个可访问的签名
函数myFunction(arg:Args):Result因此出现错误

function myFunction(arg: Args): Result;
function myFunction(arg: Partial<Args>): Partial<Result>
function myFunction(arg: Partial<Args>): Partial<Result> {
  return arg;
}

myFunction({ _id: 'aa' });// ok now
函数myFunction(arg:Args):结果;

函数myFunction(arg:Partial

我要补充的是,重载顺序很重要,因为typescript将取第一个有效的,因此在这种情况下,您应该始终将部分放在最后,否则将永远不会取另一个