@ types / react-transition-group:通用类型'ReactElement <P,T>'需要1到2个类型参数.ts(2707)

dan*_*rvt 8 typescript reactjs typescript-typings react-transition-group

我刚被这个击中。

原来在文件中 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;
    };
Run Code Online (Sandbox Code Playgroud)

这会使编译失败并显示以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

我发现如果我替换掉它:

childFactory?(child: ReactElement): ReactElement; 
Run Code Online (Sandbox Code Playgroud)

为了这:

childFactory?(child: ReactElement<any, any>): ReactElement<any, any>;
Run Code Online (Sandbox Code Playgroud)

但这不是真正的解决方案,也不是我认为的问题...

我该如何解决?

Tom*_*uth 0

我遇到了同样的问题,并且刚刚报告了一个与模块极其相似的问题@types/recompose。作为临时修复,我卸载了@types/react-transition-grouptypes/react-transition-group.d.ts在项目的根目录中添加了一个文件,其中包含以下内容:

declare module 'react-transition-group' {
    export const CSSTransitionGroup: any
}
Run Code Online (Sandbox Code Playgroud)

至少这样您就不会更改node_modules文件夹中的内容。我使用的是 v1 of,react-transition-group 所以你的占位符定义可能看起来有点不同。recompose当然,您将失去所有您自己未提供的类型提示,因此,如果问题不相关 ,也可以向 GitHub 存储库发出警告,以便他们可以提供修复程序。