2017-04-25 13 views
0

3つのスクリプトをJavascriptからTypeScriptに変換しようとしています。このスクリプトはgistにあります。私はしかし、私が取り除くことができない1つのエラーが残っている。これは私の最初のReactとTypeScriptプロジェクトであり、私は簡単に何かを見逃してしまったことに注意してください。私は.tsxファイルとTypeScript 2.1を使用しています。 タイプにコールシグネチャがない式を呼び出すことはできません。タイプ 'typeof ""'に互換性のあるコールシグネチャがありませんReact TypeScript

Cannot invoke an expression whose type lacks a call signature. Type 'typeof "ScriptCache"' has no compatible call signatures. 

ScriptCache.tsx

は次のようになります: GoogleApiComponent.tsx

import * as cache from './ScriptCache' 
... 
componentWillMount() { 
    this.scriptCache = cache({ <--Error TS2349 here 
     google: GoogleApi({ 
      apiKey: apiKey, 
      libraries: libraries 
     }) 
    }); 
} 

は私に、このエラーを与える:ファイルで

により示唆されるようにインポートエラーであることが判明し

let counter = 0; 
let scriptMap = new Map(); 

export const ScriptCache = (function (global: any) { 
    return function ScriptCache(scripts: any) { 
     const Cache: any = {} 
     ... 
+1

完全な例を挙げてください。これは、あなたのモジュールをどのように 'import' /' export'してエラーが発生したかによっても引き起こされる可能性があります。 –

+0

@SebastianSebaldあなたが正しいです、それはインポートエラーでした!どうもありがとうございます! – Ogglas

答えて

2

が見えるが:)

を修正されていないこのimport cache from './ScriptCache'ようにそれをインポートしてみてください。要点からコードを使用したばかりの場合、キャッシュもデフォルトとしてエクスポートされます。

これが機能しない場合は、import { ScriptCache as cache } from './ScriptCache'を試してください。 asの構文は必要ありません。これは変数名を変更する必要がないためです。

+1

ハハあなた自身が答えを書いただけですが、あなたのものを正しいものとしてマークします。再度、感謝します! – Ogglas

+0

あなたはようこそ! :) 見た。あまりにも遅かったです! –

1

@セバスチャンSebald。

間違っ:

import * as cache from './ScriptCache' 

正しい:インポートしているよう

import cache from './ScriptCache' 
+1

モジュールの構文をよりよく理解したい場合:これは役立ちます:http://stackoverflow.com/questions/43385452/difference-between-import-as-button-and-import-button/43385719#43385719 :) –

関連する問題