2017-08-30 7 views
2

Vega-LiteというReactクラスをVoyagerというプロジェクトからインポートしようとしています。ここでJSX要素タイプ 'xxx'はJSX要素のコンストラクタ関数ではありません。プロパティ 'yyy'はタイプ 'xxx'で保護されていますが、 'ElementClass'タイプで公開されています

は私のコードです:

import * as React from 'react'; 
import {VegaLite} from 'datavoyager/build/components/vega-lite'; 

export interface Props { 
    spec: any; 
    logger: any; 
} 

export const View = ({spec, logger}: Props) => { 
    return(
    <VegaLite spec={spec} logger={logger}/> 
); 
}; 

は、ここに私のエラーです:

[ts] JSX element type 'VegaLite' is not a constructor function for JSX elements. Property 'componentDidMount' is protected in type 'VegaLite' but public in type 'ElementClass'.

私はクラスVega-Liteで、機能componentDidMount()が実際にprotectedであることを知っています。しかし、どうすればこのエラーを解決できますか?

PS:私はtsconfig.jsonallowSyntheticDefaultImports~trueを設定しようとしましたが、同じエラーが続きます。

+0

'' tsconfig.json'に '' allowSyntheticDefaultImports ":true'という行がありますか? – Andrew

+0

@Andrewはい私はそれを試みましたが、それはエラーを取り除きません... – CherryQu

答えて

2

反応タイプを15.0.25以下にダウングレードする必要があります。 15.0.25バージョン以降、ライフサイクルメソッドはすべて公開されています。ここで

はそれについての問題である: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/16893

より良い解決策は、そのコンポーネントが新しい反応タイピングと互換性がないということを伝えることになるvoyagerレポで問題を作成することになります。彼らは^15.0.8を使用します。

+0

@ xxxxはJSX.Elementsのtsのコンストラクタではないことを修正するために@ types/react @ 16.0.4にアップグレードしなければなりませんでした警告 – lxm7

関連する問題