Typescript-获取咖喱函数的参数类型返回无限错误ts 2589

问题描述

TypeScript版本

3.9.7

我想做什么

我想获取咖喱函数的所有参数的类型。

代码

export type Cast<X,Y> =
    X extends Y
    ? X
    : Y

type _uncurryArgs<
    Current extends (...args: any[]) => any,Args extends any[] = [],CurrentArgs extends any[] = Current extends (...args: infer U) => any ? U : []
> = {
    last: Cast<Concat<Args,CurrentArgs>,any[]>,deeper: _uncurryArgs<
        ReturnType<Current>,Cast<Concat<Args,any[]>
    >
} [
    ReturnType<Current> extends (...args: any[]) => any
    ? 'deeper'
    : 'last'
]

type _uncurry<F extends (...args: any) => any> = (...args: Cast<_uncurryArgs<F>,any[]>) => void

问题

在类型_uncurry上,_uncurryArgs<F>返回错误类型实例化的深度过深,甚至可能是无限的”(ts 2589)。

我理解为什么会出现错误,但是目前我除了找到//@ts-ignore之外没有找到其他解决方案,这非常可怕……因此,如果有人有想法,我将非常高兴!

谢谢预先的家伙!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)