2017-08-30 72 views
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設置?

回答

0

想通了!

我使用的是過時版本的@types/react。將它顛覆到最新版本解決了我的問題。