Javascript 类型脚本反转参数顺序
反转函数参数顺序非常简单,但是推断反转函数的类型似乎非常困难(或者不可能,因此问题就来了) 给定此(非ts)代码 我试图找到一种方法来键入返回的包装函数,使Javascript 类型脚本反转参数顺序,javascript,typescript,Javascript,Typescript,反转函数参数顺序非常简单,但是推断反转函数的类型似乎非常困难(或者不可能,因此问题就来了) 给定此(非ts)代码 我试图找到一种方法来键入返回的包装函数,使fn的参数反向。我似乎找不到这样做的方法,也找不到关于它的任何文档 例如: export const flip = <T extends (...args: any[]) => any>(fn: T) => (...args: any[]) => fn(...Array.from(args).revers
fn
的参数反向。我似乎找不到这样做的方法,也找不到关于它的任何文档
例如:
export const flip = <T extends (...args: any[]) => any>(fn: T) =>
(...args: any[]) => fn(...Array.from(args).reverse());
export const flip=any>(fn:T)=>
(…args:any[])=>fn(…Array.from(args.reverse());
正确地说,返回的类型是(…args:any[])=>T
是否有一种方法可以删除
(…args:any[])=>fn(…)
这将允许TS理解包装函数的参数顺序只是内部函数参数的反转数组?函数参数列表是一个元组
,因此在调用数组后,需要将其转换回正确的元组
类型。反转
const reverse=供全面讨论。函数参数列表是一个元组
,因此在调用Array.reverse
后,需要将其转换回正确的元组
类型
const reverse=供全面讨论。不,不可能。您可能只需要有限数量的参数就可以完成此操作,并且您将在rest和可选参数方面遇到问题。@TitianCernicova Dragomir我认为可能是这样,所以我最好的办法是保持原样。谢谢。我认为一般的解决方案是不可能的,在这种情况下,人们所做的是对所有有意义的情况进行一组签名,例如,对于具有0到9个参数的函数,10个签名。@alx正是我所建议的。。也许这不是我想要的@好吧,我想知道,如果没有rest和可选参数,这将如何工作!n个签名案例。还是我把这个解释错了?不,不可能。您可能只需要有限数量的参数就可以完成此操作,并且您将在rest和可选参数方面遇到问题。@TitianCernicova Dragomir我认为可能是这样,所以我最好的办法是保持原样。谢谢。我认为一般的解决方案是不可能的,在这种情况下,人们所做的是对所有有意义的情况进行一组签名,例如,对于具有0到9个参数的函数,10个签名。@alx正是我所建议的。。也许这不是我想要的@好吧,我想知道,如果没有rest和可选参数,这将如何工作!n个签名案例。还是我的解释有误?
export const flip = <T extends (...args: any[]) => any>(fn: T) =>
(...args: any[]) => fn(...Array.from(args).reverse());