@types/react-transition-group:通用类型 'ReactElement<P, T>' 需要 1 到 2 个类型 arguments.ts(2707)
Posted
技术标签:
【中文标题】@types/react-transition-group:通用类型 \'ReactElement<P, T>\' 需要 1 到 2 个类型 arguments.ts(2707)【英文标题】:@types/react-transition-group: Generic type 'ReactElement<P, T>' requires between 1 and 2 type arguments.ts(2707)@types/react-transition-group:通用类型 'ReactElement<P, T>' 需要 1 到 2 个类型 arguments.ts(2707) 【发布时间】:2019-07-08 23:19:06 【问题描述】:我刚刚被这个击中了。
原来在文件node_modules/@types/react-transition-group/TransitionGroup.d.ts
中
有这种类型:
type TransitionGroupProps<T extends keyof JSX.IntrinsicElements = "div", V extends ReactType = any> =
(IntrinsicTransitionGroupProps<T> & JSX.IntrinsicElements[T]) | (ComponentTransitionGroupProps<V>) &
children?: ReactElement<TransitionProps> | Array<ReactElement<TransitionProps>>;
childFactory?(child: ReactElement): ReactElement;
[prop: string]: any;
;
这导致编译失败并出现以下错误:
ERROR in [at-loader] ./node_modules/@types/react-transition-group/TransitionGroup.d.ts:16:30
TS2707: Generic type 'ReactElement<P, T>' requires between 1 and 2 type arguments.
ERROR in [at-loader] ./node_modules/@types/react-transition-group/TransitionGroup.d.ts:16:45
TS2707: Generic type 'ReactElement<P, T>' requires between 1 and 2 type arguments.
我发现如果我替换这个:
childFactory?(child: ReactElement): ReactElement;
为此:
childFactory?(child: ReactElement<any, any>): ReactElement<any, any>;
但这不是真正的解决方案,或者我认为的问题......
我应该如何解决这个问题?
【问题讨论】:
遇到了与@types/react-select 2.0.17 非常相似的东西(请参阅我的另一篇文章)。能够通过降级到较低版本(2.0.8)来解决这个问题。通过反复试验。然而,react-select 依赖于@types/react-transition-group(在版本“*”),现在卡住了这个错误。 【参考方案1】:看起来this commit 删除了所有模板值并导致中断。我可以通过向包中显式添加版本 (2.0.15) 来解决此问题。
npm install @types/react-transition-group@2.0.15
2.0.15 是最新版本。 2.0.16 及更高版本包含错误提交。
【讨论】:
【参考方案2】:我遇到了同样的问题,并且刚刚报告了一个非常相似的 issue @types/recompose
模块。作为临时修复,我卸载了 @types/react-transition-group
并在我的项目的根目录中添加了一个 types/react-transition-group.d.ts
文件,其中包含以下内容:
declare module 'react-transition-group'
export const CSSTransitionGroup: any
至少那时您不会更改 node_modules
文件夹中的内容。
我正在使用 react-transition-group
的 v1,因此您的占位符定义可能看起来有些不同。当然,如果recompose
问题不相关,您将放弃所有您自己不提供的类型提示,因此也可以提醒 GitHub 存储库以便他们提供修复。
【讨论】:
我遇到了同样的问题,并分叉了 DefinatelyTyped 存储库(@types/react-transition-group 的来源)并如上所述修复。问题是,如果我尝试运行他们的测试,它会失败并显示“这是此类型参数的默认值,因此可以省略。”所以它是“如果我这样做该死,如果我不这样做该死。”大声笑以上是关于@types/react-transition-group:通用类型 'ReactElement<P, T>' 需要 1 到 2 个类型 arguments.ts(2707)的主要内容,如果未能解决你的问题,请参考以下文章