10

TypeScriptを使用してWin8アプリを開発しています。

タイプスクリプトコードをコンパイルするために、以下を使用してそれらを追加winrt.d.tswinjs.d.tsて参照しました。

<reference path="winrt.d.ts" static="true" />
<reference path="winjs.d.ts" static="true" />

コンパイルとビルドは成功しましたが、IDEのintelliSenseは非常に低速でした。winrt.d.tsファイルを開いて確認しただけです。このファイルには18,770行あり、その場でコンパイルするには非常に大きなファイルです。

ちょうど同じように再度コンパイルせずにそれらの巨大な定義ファイルを参照するためのオプションや方法はありますlib.d.tsか?

この遅さは私のTypeScriptの選択をひどく傷つけます。

更新しました:

現在のコンパイラバージョン(0.8.0)では、解決策はありません。近い将来のリリースで最高のパフォーマンスの向上が見られることを願っています。

更新しました:

これが開発者を後押しするための私の単純なハックです。パフォーマンス。作成しただけですwinrt.compact.d.ts。次に、実際に使用されている名前空間の一部のみをコピーして、ファイルを保存します。

幸い、file(winrt.d.ts)はいくつかの宣言ファイルから生成されているように見えます。したがって、各名前空間は他の名前空間から明確に分離されています。WinRTのコンパクトバージョンを作成する方がはるかに簡単です。

4

2 に答える 2

2

現在、Codeplexにはこの問題に関して未解決の作業項目があります。

http://typescript.codeplex.com/workitem/265

これを改善するために現在できることは何もありません(コンパイラにハードウェアを追加することを除いて!)しかし、うまくいけば、作業項目が取り上げられ、問題が解決されるでしょう。

于 2012-10-16T20:16:49.750 に答える
2

私が間違っている場合は訂正してください。ただしlib.d.ts、コンパイラによって特別な方法で処理されているとは思いません。私はソースコードを見てみました、そしてここに以下を扱うスニペットがありますlib.d.ts

if(this.compilationSettings.useDefaultLib) {
    var compilerFilePath = this.ioHost.getExecutingFilePath();
    var binDirPath = this.ioHost.dirName(compilerFilePath);
    var libStrPath = this.ioHost.resolvePath(binDirPath + "\\lib.d.ts");
    code = new TypeScript.SourceUnit(libStrPath, null);
    this.compilationEnvironment.code.push(code);
}     

ユーザーがインクルードを要求lib.d.tsした場合、コンパイルする最初のコードとしてコンパイル環境に追加されるだけです。他のすべてのソースファイル(に保存されてopts.unnamedいるものはまったく同じ方法で追加されます:

for(var i = 0; i < opts.unnamed.length; i++) {
    code = new TypeScript.SourceUnit(opts.unnamed[i], null);
    this.compilationEnvironment.code.push(code);
}  

したがって、lib.d.tsが特別な方法で処理されていない場合、これは他の(宣言)ファイルでも不可能です。また、私のシステムlib.d.tsには7,677行あり、これは報告されているの18,770行よりもはるかに少ないためwinrt.d.ts、すべての行の合計がコンパイラが許容可能な速度を達成するには多すぎる可能性があります。

それ以外の私の唯一の考えは、「何か他のもの」があなたのマシンの速度低下を引き起こしているということです。ライブラリへのリンクとコードのスニペットを提供していただければ、少なくともシステムでのコンパイルの実行にかかる時間を測定できます。

于 2012-10-16T06:46:14.550 に答える