Typescript 解决了一个类型问题,但不了解到底做了什么

Typescript 解决了一个类型问题,但不了解到底做了什么,typescript,Typescript,我遇到了一个非常常见的关于cid=>cid的类型错误,如下所示 从“lodash”导入*as uuu; 导出常量func1=389;.wrap _.memoize=>, func:Function,cid:number=>funccidcid, ; 我很高兴我偶然发现了一个解决方法,但我想知道是什么解决了问题。 我的主要障碍是: 很难理解什么与什么完全对应。是不是cid=>cid的cid:Parameters[0]=>Parameters[0]类型错误? 参数[0]被视为类型,但[]对我来说是新

我遇到了一个非常常见的关于cid=>cid的类型错误,如下所示

从“lodash”导入*as uuu; 导出常量func1=389;.wrap _.memoize=>, func:Function,cid:number=>funccidcid, ; 我很高兴我偶然发现了一个解决方法,但我想知道是什么解决了问题。 我的主要障碍是:

很难理解什么与什么完全对应。是不是cid=>cid的cid:Parameters[0]=>Parameters[0]类型错误? 参数[0]被视为类型,但[]对我来说是新的。 funccidcid的语法是什么?FuncId是另一个函数吗?
我发现您的上述实现存在一个小问题,如下所示:

这是备忘录签名:

any>func:T,解析器?:…args:Parameters=>any:T&MemoizedFunction; 让我们看一下解析器,因为第二个参数将采用一个函数param,该函数的参数是T的参数,它是=>\uu.debouncefunc2,1500

=>\ debouncefunc2,1500是一个没有任何参数的函数,这意味着您的解析器也应该没有参数

简言之,正确的实现应该基于定义的类型,如果代码运行良好,也可能是错误的:

导出常量func1=389;.wrap _.memoize=>\uu.debouncefunc2,1500,=>{},//第二个参数将采用第一个参数`=>\uu.debouncefunc2,1500的参数` //或者,如果您希望为第二个参数添加参数,也应该为第一个参数添加参数 //_u.memoizeid=>u.debouncefunc21500,id=>id, func:Function,cid:number=>funccidcid, ;
关于你关于什么是FuncCid的问题?因为func被设置为函数类型,所以它可以被调用两次funccid返回另一个函数,然后它被调用另一次funccidcid

您使用的是哪个版本的lodash?@tmhao2005lodash@4.17.20和@类型/lodash@4.14.165
Argument of type '(cid: Parameters<T>[0]) => Parameters<T>[0]' is not assignable to parameter of type '() => any'.ts(2345)