@types/react-virtualized 打字产生 TS 错误

@types/react-virtualized typings are producing TS errors

我正在使用:

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 需要两个类型参数,因此 class 不能扩展 PureComponent<T> 但它可以扩展 PureComponent<T, {}>.

我的假设是否正确? @types/react-virtualized 中是否存在因尝试扩展 PureComponent<ListProps> 而导致的错误?或者我使用的是这些软件包的不兼容版本?或者是否有我需要使用的 TypeScript 设置来允许这样做?

想通了!

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