Typescript 多类型rest参数类型定义

Typescript 多类型rest参数类型定义,typescript,Typescript,我正在尝试为此javascript库编写一个typescript定义文件: 当前的问题在于函数pun.match,该函数将每隔一个参数交替作为ADT对象或匿名函数。我想在typescript定义中将其描述为: export function match<K extends ADT, V>([syntax here for ...: K, () => V]): V; 导出函数匹配([此处的语法用于…:K,()=>V]):V; 我怀疑这是不可能的。如果不是,我能做些变通吗 谢谢

我正在尝试为此javascript库编写一个typescript定义文件:

当前的问题在于函数
pun.match
,该函数将每隔一个参数交替作为ADT对象或匿名函数。我想在typescript定义中将其描述为:

export function match<K extends ADT, V>([syntax here for ...: K, () => V]): V;
导出函数匹配([此处的语法用于…:K,()=>V]):V;
我怀疑这是不可能的。如果不是,我能做些变通吗

谢谢

我怀疑这是不可能的。如果不是,我能做些变通吗

不可能。解决方法使用
any[]

export function match(...args:any[]): any;
或者,您可以为前几(n)种情况定义它:

声明函数匹配(k:k,v:()=>v,k2?:k,v2?:()=>v,k3?:k,v3?:()=>v):v;

我指的是仍然提供类型安全性的解决方案。但我想这有点太过分了。谢谢。@Peter添加了另一个更安全的解决方法。但有一个权衡
declare function match<K extends ADT, V>(k: K, v:() => V, k2?: K, v2?:() => V, k3?: K, v3?:() => V): V;