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

时间:2019-02-14 20:39:13

标签: reactjs typescript 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;
    };

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

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>;

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

我该如何解决?

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并且刚才报道了一个@types/recompose模块的情况非常相似的issue。作为临时修复,我卸载了@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,因此您的占位符定义可能看起来有些不同。当然,您会放开所有您不提供的类型提示,因此也可能会给GitHub存储库一个提示,以便他们可以提供修复,如果recompose问题没有得到解决相关的。

答案 1 :(得分:0)

this commit似乎删除了所有模板值并导致中断。我可以通过在软件包中明确添加一个版本(2.0.15)来解决此问题。

npm install @types/react-transition-group@2.0.15

2.0.15是最新的版本。 2.0.16及更高版本包含错误的提交。