2017-04-11 2 views
0

私はES6とTypeScriptを初めて使用しています。私たちはいくつかのコードをES6にリファクタリングしましたが、メンテナンス可能なコードを書くのではなく、TypeScriptに切り替えるほうが良いのではないかと試してみました。TypeScriptで認識されないエクスポートオブジェクトのタイプ

私は、このようなapp.jsのように、私のプロジェクト全体のどこでも、このモジュールをインポートconfig.js

export default { 
    logger: require('winston'), 
    somethingelse: 'text' 
} 

以下、簡略化されES6モジュールを使用している場合:

import * as config from '../../../../config' 
const logger = config.logger 
... 

私の知る限り理解し、タイピングはオプションですTypeScriptでは、ファイル名を.jsから.tsに変更するだけで、ES6コードは正常に動作するはずです。それが私の間違った前提だったら私を修正してください。しかし、私はコンパイル時に私はこのエラーを取得する:

/project/app.ts(7,23): Property 'logger' does not exist on type 'typeof \"/project/config\"'. 

だから、意味、私は型を宣言するを持って?そこで、私は先に進み、エクスポートされたオブジェクトのインタフェースを宣言しました。

config.js

interface IConfig { 
    logger: any; 
    somethingelse: string; 
} 

const defaultConfig: IConfig = { 
    logger: winston, 
    text: 'text' 
} 

export default defaultConfig 

しかし、私はまだ上記のコンパイルエラーを取得しています。

答えて

0

インポートの宣言から* as ...を削除します。これを試してみてください:

import config from '../../../../config' 
const logger = config.logger 
... 

詳細については、この回答を参照してくださいTypescript export vs. default export