2017-05-23 4 views
0

JavaScriptファイルfoo.jsが独自の宣言ファイルfoo.d.tsと一貫していることをTypeScriptコンパイラでチェックすることはできますか?TypeScriptは、.jsファイルが独自の.d.ts宣言と一貫していることを確認できますか?

さまざまな理由から、私たちはJavaScriptを使いたいと思っています。可能であればTypeScriptを使用して、1)独自のJavaScriptコードがタイプセーフであることを確認する、2)TypeScriptの使用に関心のある顧客に宣言を利用できるという2つの目標を達成することが大切です。

与えられたJavaScriptファイルfoo.jsに対して、目標#2(TypeScriptの顧客をサポートする)を満たすために対応するファイルfoo.d.tsを作成することができます。しかし、私たちが知る限りでは、foo.d.tsの存在はfoo.jsのチェックをもたらさない。つまり、宣言ファイルは外部の消費者にとってはfoo.jsの関心事であり、コンパイラはJavaScriptコードが独自の.d.ts宣言と一貫しているかどうかを確認しません。

我々はfoo.js内JSDocのタイプのアノテーションを使用して実験してきた、と活字体コンパイラは、そのファイル内のコードは、これらの宣言された型と一致していることを確認しません。それは目標#1(私たち自身のコードをチェックしてください)を満たすように見えます。

しかし、jsDocアノテーションは、.d.ts宣言ファイルで可能な完全なTypeScript構文ほど強力ではありません(たとえば、ジェネリックのjsDocサポートは基本的なものです)。さらに、TypeScriptコンパイラは、jsDocアノテーションが.d.ts宣言と一貫しているという検証を提供していないようです。これらの2つのタイプの情報源の間に矛盾が生じるおそれがあります。

このようなJavaScriptプロジェクトの文脈でTypeScriptの型チェックを利用する最良の方法についてのガイダンスがあります。

+0

あなたはユニットテストスクリプトを使用している場合、それは活字体に変換する価値があるかもしれません。そうすれば、強く型付けされたインターフェースに自信が持てます。 –

+0

@ChrisReynolds良いアイデア、ありがとう。 –

答えて

1

それは本当に

独自の宣言ファイルfoo.d.tsと一致しないのJavaScriptファイルfoo.jsはことを活字体のコンパイラのチェックをすることは可能です。 .jsファイルは、についての文脈は全くありません。正確にはです。サポートされているものとサポートされていないものがあります。可能であれば、TypeScriptは必要ありません。

もっと

+0

私はこれを理解しているか分からない。 JavaScriptは型に関してあいまいですが、 'foo.js'内に、そのファイル内の関数の連絡先を正確に定義するjsDocコメントを書くことができます。 TypeScriptコンパイラは、コードがそれらの契約を満たしていることを確認します。同じjsDocコメントを 'foo.d.ts'に抽出して、より大きな表現度を可能にする別の形式で同じ契約定義を提供することができます。これらの宣言をファイル自体に適用する有効なユースケースのようです。jsDocコメントが現在許可されているのと同じレベルの安全性を達成するだけです。 –

関連する問題