JVM上でTypeScriptとVert.xを使ってES6/7を実行する
vertx-lang-typescriptを使うと、TypeScriptのバーティクルをJVM上で実行でき、アロー関数、クラス、べき乗演算子などのES6/7の機能をVert.x 3.2に導入できます。

最新のVert.x 3.2リリースと、vertx-lang-typescript 1.1.0を組み合わせることで、TypeScriptでVert.xのバーティクルを書き、JVM上で直接実行できるようになりました。このライブラリはTypeScriptをその場でJavaScriptにコンパイルし、Vert.x JavaScript APIの型定義を提供するため、IDEのオートコンプリートやインラインドキュメントが利用できます。
これは単にTypeScriptの型システムだけの話ではありません。ECMAScript 6および7の機能を今日からJVMベースのスタックに取り込めるということです。この記事のサンプルバーティクルは、単一のHTTPサーバーで9つのES6/7機能を示しています:
- リクエストハンドラのアロー関数
letによるブロックスコープ変数- デフォルトパラメータ値
- 残余引数とスプレッド演算子
for…ofループ- テンプレート文字列と補間
- クラスと継承
- ES7のべき乗演算子(
**)
バーティクルは単一のコマンドで実行できます:vertx run es7verticle.ts。NPMパッケージのラッピングも、別途ビルドステップも不要です。これは、以前Vert.xが推奨していたBabelベースのアプローチ(npm run buildの後にnpm startが必要で、単一言語プロジェクトに固定される)よりもクリーンなワークフローです。
トレードオフ:vertx-lang-typescriptは現在、ES7からはべき乗演算子のみをサポートしています。TypeScript 1.7のデコレータはまだ実験的であるため無効化されています。完全なES7仕様が必要な場合は、将来のリリースを待つか、Babelを使い続ける必要があります。
多数のバーティクルを持つ大規模なVert.xアプリケーションでは、静的型付けとIDEサポートが真のメリットとなります。このライブラリはSublime、VS Code、Eclipse、Atomで動作します。また、vertx-lang-typescriptはその場でコンパイルするため、同じプロジェクト内でTypeScriptのバーティクルとJavaやJavaScriptのバーティクルを混在させることができます。これはNPMベースのBabelセットアップではできなかったことです。
すでにVert.xを使用していて、JVMを離れずにモダンなJavaScript構文を利用したいなら、これは検討に値します。ただし、完全なES7の遊び場を期待してはいけません。
ディスカッション
0 件のコメント
最初のコメントを投稿しましょう。