@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
, Повышение его до последней версии исправило мою проблему.