web-dev-qa-db-ja.com

クロージャーコンパイラ+ Typescript

TypeScriptを使用してから、Closure Compile(高度なコンパイル)を使用してES5をターゲットにし、出力を縮小したいと思います。

Tscの代わりに tsickle を使用する必要がありますか? tscが持つすべてのオプションのサポートが不足しており、TypeScriptタイプをClosureタイプ(100%互換ではない)に変換したいという点で非常に野心的です。クロージャタイプを実際に使用する必要はありません。縮小/プロパティの名前変更が必要です。

Tscを使用してTypeScriptをES6モジュールにコンパイルし、Closure Compilerを使用してそれらを縮小することはできますか(型チェックや型ベースの最適化なしで)?

ボーナス:クロージャーライブラリを使用したい場合、この回答は変わりますか?

12
Paul Draper

技術的には、ES6出力をtscから取得し、すぐにClosureCompilerにパイプすることができます。後者はJSを入力として受け入れるように指定されているためです。私たちはすでに多くの場所でこれを行っています。 Angularクロージャコンパイラでコンパイルされたアプリは、rxjsライブラリディストリビューションを取得し、クロージャバンドルに含めます。 https://github.com/angular/closure-demo を参照してください。

実際には、クロージャーがJSを認識する前に、tsickleのようなものを使用してJSを変換する理由がいくつかあります。

  • 列挙型の放出はクロージャ(またはロールアップIIUC)では機能しません
  • クロージャにはES6でいくつかの制限があります。たとえば、現在export *をサポートしていません-tsickleはそれをexport {each, visible, symbol}に書き換えます
  • jSDocアノテーションを追加すると、クロージャーがコードの構造を理解するのに役立ち、最適化を改善し、出力される警告の数を減らすことができます。

現在の計画では、tsickleを複数のTS 2.3エミットトランスフォームに分解することです。そうすれば、コンパイラで実際に有効にする必要があるトランスフォームをより明確にすることができます。

タイプの追加はオプションです。 tsickleの型付きモードをオフにすると、代わりに型の{?}が出力されます。ただし、クロージャJSコードからのTypeScriptの出力を使用する場合は、クロージャの型チェッカーに型を認識させる必要があります。

新しいビルドツールをお探しの場合は、ある時点で https://github.com/bazelbuild/rules_TypeScript のBazelツールチェーンにtsickleをビルドします。それまでの間、Tsickleのメインの機能リクエストを提出して、より多くのコマンドラインフラグをサポートすることができます。 (しかし、LucidchartはすでにTsickleのフォークを維持していると思いますか?)

9
Alex Eagle