【问题标题】:@types/react-virtualized typings are producing TS errors@types/react-virtualized 类型正在产生 TS 错误
【发布时间】:2018-02-08 16:49:12
【问题描述】:

我正在使用:

  • typescript 2.1.6(虽然我也可以使用 2.4.0 重现此错误)
  • react 15.6.1
  • react-virtualized 9.9.0
  • @types/react-virtualized 9.7.3

TS 抱怨以下(示例)代码:

import * as React from "react";
import { List, ListRowProps } from "react-virtualized";

class TestComponent extends React.PureComponent<{}, {}> {
    public render() {
        return (
            <List
                width={300}
                height={300}
                rowCount={100000}
                rowHeight={30}
                rowRenderer={this.rowRenderer}
            />
        );
    }

    private rowRenderer(props: ListRowProps) {
        return <div
                 key={props.key}
                 style={props.style}
               />;
    }
}

具体来说,它给了我这个错误:

error TS2605: JSX element type 'List' is not a constructor function for JSX elements.

值得注意的是,如果我直接进入并编辑List.d.ts,我可以通过更改来修复它:

export class List extends PureComponent<ListProps> {

export class List extends PureComponent<ListProps, {}> {

鉴于PureComponent 的定义是

class PureComponent<P, S> extends Component<P, S> { }

PureComponent 需要两个类型参数,所以一个类不能扩展 PureComponent&lt;T&gt; 但它可以扩展 PureComponent&lt;T, {}&gt;

我的假设是否正确? @types/react-virtualized 中是否存在由尝试扩展 PureComponent&lt;ListProps&gt; 引起的错误?还是我使用了这些软件包的不兼容版本?或者是否有我需要使用的 TypeScript 设置来允许这样做?

【问题讨论】:

    标签: reactjs typescript react-virtualized


    【解决方案1】:

    想通了!

    我使用的是过时版本的 @types/react。将其升级到最新版本解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2021-10-24
      • 1970-01-01
      • 2020-03-07
      • 2020-12-30
      • 2022-08-02
      • 1970-01-01
      相关资源
      最近更新 更多