1

これはばかげた質問であり、答えは「はい」ですが、元々、既存のフレームワークにDefinitely Typed記述子を使用していたときは、コーディング中のコンパイル型の安全性とインテリセンススタイルのルックアップにのみ使用すると思っていました。

https://github.com/borisyankov/DefinitelyTyped/tree/master/knockout(例)

今はVisualStudioを使用しておらず、Rubymineを使用してrakeビルドスクリプトでtsc.exeを呼び出していますが、ソースファイルを変換しているときに、次のようなタイプが保持されていることに気付きKnockoutObservableStringました。とko.observable

では、すべての記述子も変換して、Webページのソースコードに含める必要がありますか?

4

1 に答える 1

1

短い答え、いいえ。

長い答え:定義ファイルをコンパイルする必要はありません。1つを見ると、インターフェイスのみが含まれていることがわかります。したがって、1つをコンパイルできる場合は、JavaScriptファイルが空になります。

定義ファイルは、ライブラリ自体をTypeScriptに変換することなく、既存のJavaScriptライブラリに入力サポートを追加するために使用されます。

TypeScriptで次の行を記述します。

var myObservableString: KnockoutObservableString;

にコンパイルされます

var myObservableString;

これらのタイプのポイントは、コンパイル時にエラーが発生した場合に通知されることです。例えば:

myObservableString = ko.observable("Hello World"); // valid
myObservableString = ko.observable(false); // error, because you have specified the variable as an observable string

ただし、TypeScriptでオブザーバブルをインスタンス化する必要があります。呼び出すことはできません。new KnockoutObservableString(string);

コンパイルされたJavaScriptでこれらのタイプを取得することは絶対にないはずです。そのため、ここで別の問題が発生している可能性があります。定義ファイルのコンパイルの出力を参照していますか?

于 2013-03-23T14:42:01.227 に答える