私は、/typings/tsd.jsonの.dファイルを扱う方法を使用し、Typescriptのmodule
キーワードを使ってjavascriptにコンパイルする古いtypescriptプロジェクトを持っていますIIFEモジュールパターン。 tsconfig.json(commonjs/amd/etc。)のモジュール設定は、そのキーワードによって無視されます。デモのために周囲と非周囲のタイスクリプト定義ファイルを合成する方法
、私は//node_modules/@種類に.d.tsファイルで、このプロジェクトにSystemJSモジュールローダーでimport
とexport
キーワードのより一般的な方法を使用していくつかの新しいtypescriptですコードを追加しています。
いくつかのGulp/SystemJS体操の後、それはすべて実行時に一緒に動作し、私は締め切りを迎えています。しかし、私は解決したい一つのシナリオでコンパイル時に問題を抱えています。
新しいコードからクラス(モデル)を使用するように古いコードを変更すると、古いコードで新しいコードの.d.tsについて知りたいと思います。そこで、古いコードのファイル/// <reference path="../../newercode/feature4/models/NewerModels.d.ts"/>
の先頭に追加しました。 (代わりに、同じ行をtsd.d.tsに入れますが、同じ結果が得られます)
コンパイラは私の古いコードに「NewModel」というプライベートネームを持っている、または使用しています。
import
とexport
の中にキーワードがありますが、すでに/ typings /にある.d.tsファイルは存在しません。これらのキーワードは、誤ったコンパイラエラーの原因です。
レガシープロジェクトでは周囲の.d.tsファイルが必要です。新しいコードでは非周囲環境が生成されます。
私はそれについて何かできることはありますか?
'tsd'を使い続ける代わりに' @ types'を使うように移行することをお勧めします。あなたはワンショットでそれを行うことができるはずです。 – unional
パッケージのために入手した.d.tsファイルは、どこから取得するかによって異なります。私がそれをした場合、すべての.d.tsファイルにインポート/エクスポートキーワードがあるので、レガシーコードはまったくコンパイルされません。 –
'@ types'から入手した新しいファイルは、同じ構文を持つ必要があります。オリジナルのライブラリはまだ同じCommonJSライブラリです(変更しない限り、バージョニングに対処する必要があります)。 'tsd'はファイルをDefinitelyTypedから取得し、' @ types'と同じものを取得します。 TSチームは合理的な仕事をしてフォーマットを変換しました。それが動作するかどうかを試してみてください。 – unional