2016-12-04 12 views
1

TypeScript 2.0の場合、ライブラリの作成者はファイルをライブラリコードとともに出荷することが望ましいため、そのライブラリをnpmでインストールすると、ライブラリコードとそれに対するTSタイピングが含まれています。ライブラリに同梱されているTypeScript宣言ファイルが新しいTypeScriptの機能を使用する場合

私の質問は:私はTS 2.0を使用し、ライブラリfoo-bar.jsのために書かれたタイピングは、より新しいTSバージョンの機能を使用していますか?

唯一安定した2.xバージョンが2.0であるため、現在のところ問題はありません。しかし、TS 2.2には新しいキーワード/演算子/タイプのサポートが付属しており、ライブラリの作者はコードを同梱した.d.tsファイルで使用することを想像してください。自分のプロジェクトでTSを最新バージョンにアップグレードしない限り(コンパイル時にサードパーティの.d.tsファイルの構文エラーを防止しない限り)、これらのライブラリを使用できなくなりますか?

+1

インストールするバージョンをnpmに伝えることができるので、使用しているバージョンと同じかそれより低いtsバージョンを使用するバージョンを使用してください。他の言語との違いはありません。私がJava 8を使用していない場合、私はJava 8用に書かれたライブラリを使用できません。 –

答えて

0

これは良い質問ですが、TSエンジニアがどのように互換性を維持することを約束しているかに大きく依存しています。一般に、コンパイラエンジニアを書くときには下位互換性のために努力します。つまり、古いコードは新しいコンパイラでコンパイル可能です。同様に、一般に古いライブラリは新しいバージョンのコンパイラによってリンクすることができます。

これは一般的な経験則ですが、コンパイラーの作成者は、良い(または悪い)理由で互換性を破ることがあります。

しかしながら、もう1つの一般的な経験則として、フォワード互換性は大きな問題ではありません。新しいバージョンのコンパイラでコンパイルされたコード(ie- .d.tsファイル)を使用したい場合、新しいバージョンを使用することが予想されます。この制限は、必要なライブラリを自由に組み合わせてマッチさせることを望むユーザーにとっては悪いですが、コンパイルされたコードで新しい機能を自由に使用したいと考えるコンパイラ作成者にとっては悪いことです。

TSエンジニアだから、これはそのことでコンパイルされたライブラリにリンクするために、それはあなたがあなたのコンパイラをアップグレードする必要があります可能性がありますことを、あなたの質問に答えるの長い道のりで、一般的には非常に思慮深いですし、

可能性があります新しいコンパイラ。

+0

あなたの答えをありがとう。私はTSをアップグレードする余裕がない場合に備えて、私のサードパーティの依存関係のいくつかは、TSの最新バージョンと最高のバージョンを(コードのメジャーバージョンを増やすことなく)使用することを決定しています。私は彼らがターゲットとするTSオーディエンスを気にする他の開発者に頼る必要があると思う。それがどうなるか見てみましょう。再度、感謝します。 –

関連する問題