0
我使用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.
值得注意的是,如果我去和直接編輯0我可以通過改變解決這個問題:
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, {}>
。
我的假設是否正確?試圖擴展PureComponent<ListProps>
導致@types/react-virtualized
中有錯誤嗎?或者我使用這些軟件包的不兼容版本?或者是否有我需要用來允許的TypeScript設置?