2016-07-01 18 views
0

現在、既存のJavaScriptアプリケーションをTypeScriptに変換しようとしています。このステップをステップごとに行うには、コンパイラオプション "allowJs"を使用して既存のJavaScriptコードをコンパイルすることから始めました。既存のファイルをTypeScriptに変換し始めると、名前空間を作成する際にエラーが発生します。プロジェクトをTypescriptに変換する際に「Duplicate identifier」エラーが発生しました

これは基本的な例です。

namespace myapp { 
    export var c1 = 5; 
} 

、古いJavaScriptファイル:

​​

これは、有効なJavaScriptの出力につながりますが、エラーが発生します。

error TS2300: Duplicate identifier 'myapp'. 
私はこれらの2つのファイル、新しいtypescriptファイルを持っています

このエラーや同じ名前空間を使用するファイルを変換する他の方法を避ける方法はありますか?

マイtsconfig.json:あなたのtsconfig.json「ファイル」のいずれかを提供したり、それぞれのファイルを含めたり除外し、フィールドを「除外」で

{ 
    "compilerOptions": { 
     "allowJs": true, 
     "outDir": "dist" 
    } 
} 
+0

より良いアプローチは、typescriptで.tsファイルを翻訳し、webpackのようなツールを使用して、生成され、実装されたすべてのファイルでアプリケーションを作成することです。 – iberbeu

+0

バンドリングは、現時点では問題ではなく、時間。今は、すべてのスクリプトファイルを個別にインクルードしていますが、それは間違いなく後で検討する必要があります。しかし、今はコンパイル時の問題です。 – TSS

答えて

0

{ 
    "compilerOptions": { 
     "allowJs": true, 
     "outDir": "dist" 
    }, 
    "files" : ["/path/to/ts/file.ts", ...] 

} 

OR

{ 
    "compilerOptions": { 
     "allowJs": true, 
     "outDir": "dist" 
    }, 
    "exclude" : ["node_modules", "/path/to/build/js/"] 

} 

この問題の理由はtypescriptですコンパイラが故に二度同じ参照を取得し、元の(typescriptです)ソースファイルとtranspiled(ジャバスクリプト)ファイルの両方を知っているということです。あなたの仕事は、ソースのタイプスクリプトファイルだけを含めるか、またはすべての非テキストファイルを除外することです。

+0

理想的には、変換中に古いJSファイルと新しいTSファイルの両方をコンパイルできるようにしたいが、これはすべてが変換されるまで解決策になる可能性がある。 – TSS

+0

jsとtsの両方を許可する場合は、tsファイルから自動生成されたjsファイルを除外してください。 – Lekhnath

+0

これは問題ではありません。TypeScriptは無視してしまったようです。 TypeScriptがJavaScriptやTypeScriptファイルにまたがる重複した定義ではあまりにも厳しくなっているのは実際問題です。 TypeScriptは、 のようなものを生成するので、var myapp; ... var myapp; も同様である。 – TSS

関連する問題