Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/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_Function_Generics_Arguments - Fatal编程技术网

Typescript泛型类型未知参数计数

Typescript泛型类型未知参数计数,typescript,function,generics,arguments,Typescript,Function,Generics,Arguments,我试图创建一个具有泛型类型的函数,该泛型类型接受一个函数及其参数数组,然后将它们应用于该函数,但typescript无法正确解释args类型 const animate=async( 动作:(有效载荷:P)=>任何, 算法:(…args:A[])=>P[], args:A[] ) => { 如果(状态.播放)返回; 调度(切换播放()); 常量序列=算法(…args); for(序列的let元素){ 等待延迟(1); 派遣(行动(要素)); } 调度(切换播放()); }; 这是我在尝试使用它

我试图创建一个具有泛型类型的函数,该泛型类型接受一个函数及其参数数组,然后将它们应用于该函数,但typescript无法正确解释args类型

const animate=async(
动作:(有效载荷:P)=>任何,
算法:(…args:A[])=>P[],
args:A[]
) => {
如果(状态.播放)返回;
调度(切换播放());
常量序列=算法(…args);
for(序列的let元素){
等待延迟(1);
派遣(行动(要素));
}
调度(切换播放());
};
这是我在尝试使用它时遇到的错误


类型为“(rows:number,cols:number,startCell:Coordinates,endCell:Coordinates)=>GridT[]”的参数不能分配给类型为“(…args:(number | Coordinates)[])=>GridT[]”的参数。

您需要的是
参数
类型:

从函数类型的参数中使用的类型构造元组类型

然后,您可以这样定义您的函数:

const animate=async P[]>(
动作:(有效载荷:P)=>任何,
算法:F,
args:参数
) => {
//废话
}
如错误消息所示,如果将
算法的类型定义为
(…args:A[])=>p[]
,则实际上是说每个参数都是同一类型的(在本例中是
数字|坐标
),因此当您尝试传入
类型的函数时(行:编号,列:编号,起始单元格:坐标,结束单元格:坐标)=>GridT[]
不匹配