@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)的主要内容,如果未能解决你的问题,请参考以下文章