@types/ реагирует-виртуализированные типизации приводят к ошибкам TS

Я использую:

  • 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<T> но это может продлить PureComponent<T, {}>,

Верны ли мои предположения? Есть ли ошибка в @types/react-virtualized вызвано попыткой продлить PureComponent<ListProps>? Или я использую несовместимые версии этих пакетов? Или есть настройка TypeScript, которую мне нужно использовать, чтобы разрешить это?

1 ответ

Решение

Догадаться!

Я использовал устаревшую версию @types/react, Повышение его до последней версии исправило мою проблему.

Другие вопросы по тегам