TypeScriptチームは隔月リリース周期に従って,共用体のコールと複合プロジェクトのファイル追加監視のパフォーマンスを改善した,TypeScript バージョン3.3をリリースした。同時に今後6ヶ月間のTypeScriptロードマップも公開されている。
TypeScript 3.0では,大規模なプロジェクトを小さなプロジェクトに分割して --buildモードでのビルド時間を改善する,複合プロジェクトのサポートが追加された。必要なプロジェクトと依存関係のサブセットのみを再コンパイルすることで,プロジェクト間のビルドを最適化するものだ。それと合わせて,変更されたファイルと,型チェックに影響する可能性のある依存関係を持つファイルを更新することの可能な,プロジェクト内ビルドAPIも追加された。
この3.0のリリース以降,複合プロジェクトで --watchフラグを使った場合のパフォーマンスサイズに関する不満が多く聞かれるようになった。複合プロジェクトではプロジェクトのフルビルドを行う代わりとして,プロジェクト内のインクリメンタルビルドが活用されていなかったからだ。
TypeScript 3.3の --buildモードの --watchフラグでは,インクリメンタルなファイル監視を利用することで,--watchモードのビルド時間を大幅に改善し,平均50~70パーセントの短縮を実現している。
TypeScriptは共用体型をサポートすることによって,共用体の全メンバに共通するすべてのプロパティへのアクセスを可能にしている。型をコールする場合,これまでは,すべての型が同じパラメータを持つひとつのコールシグネチャを持つものでない限り,戻り型として共用体を定義することは簡単ではなかった。
TypeScript 3.3では,各共用体メンバのパラメータが合間うことで,新たなシグネチャを生成するようになる。この新しい振る舞いは,共用体のひとつの型が複数のオーバーロードを持ち,共用体内の高々ひとつの型がジェネリックシグネチャを持つ場合にのみ適用される。TypeScript 3.3の今回の機能追加について,TypeScriptチームでは,このシナリオを改善するための第1ステップと認識しており,今後さらなる改善が模索される可能性がある。
最近のリリースと比較して,TypeScript 3.3リリースの新機能の数は比較的少なくなっている。これは今回の隔月リリースが冬のホリデーを挟んでいることが主な理由だが,同チームの6ヶ月ロードマップに言語への新機能追加以外の新たな重点が示されたことを反映している可能性もある。
- あらゆる場所において,すべてのJS開発者に型を提供する
- ツーリングの強化による生産性向上
- アプローチのしやすさとUX
- コミュニティの取り組み
- インフラストラクチャおよびエンジニアリングシステム
新たなECMAScript機能の追加や言語としての洗練に依然として注目が集まる一方で,言語の安定性は,開発者の人間工学全般を重視することが可能なレベルに到達している。
この数年間,TypeScriptの採用はJavaScriptエコシステム内で加速度的に増加しており,最近ではVue.jsやJest,Storybookの次期バージョンでのTypeScriptへの移行が発表されている。多くの開発者やプロジェクトはJavaScriptから移行しているが,Flowからの移行もある。
HootsuiteのソフトウェアエンジニアリングマネージャであるOvidiu Bute氏は,TypeScriptへの移行を次のように説明する。
これら2つのプロジェクトを取り巻くコミュニティにも注目しました。Flowは,少なくともこの分析を実施した1年前には,Facebookによって極めて閉鎖的な方法で進められていた言語です。開発はまったく透過的ではなく,ロードマップも公開されていませんでした。プロジェクトへのコントリビューションは,Facebook以外からはほとんどありませんでした。対照的にTypeScriptは,数年前にGitHubに移動して以降はオープンソース開発を採用しています。最新のロードマップを公開し,外部からのコントリビューションを受け入れ,全般的にコミュニティとの密接な関係を維持しています。
Babelの創設者でFacebookエンジニアのSebastian McKenzie氏は,Flowの機能について尋ねるユーザに対する回答の中で,次のように説明している。
Flowオープンソースはほぼ放置されているので,現時点ではTypeScriptに切り替えた方がよいと思います。
このような懸念に対してFlowチームは,現在の進捗状況と2019年計画の見直しによる対処を始めている。この概要の中で,FacebookのソフトウェアエンジニアであるAvik Chaudhuri氏は,FlowからTypeScriptへの移行について取り上げている。
最近,Facebookを起源とするオープンソースプロジェクトの多くが,TypeScriptでのリライト計画を発表しています。Facebookでは個々のチームの独立性を強く尊重しており,各チームがロードマップを作成し,開発中のプロダクトに対して最大限の努力を払っています。TypeScriptへの切り替えを決定したプロジェクトは,この切り替えによって外部コントリビュータによる支援をより多く受けられるようになります。私たちはこの決定を尊重します。
Angular,Dojo,IonicなどTypeScriptで記述された既存のフレームワークの多くや,TypeScriptへの転向を計画している他のフレームワーク,さらにはTypeScriptアプリをセットアップするために最小限の型定義またはCLIツーリングを提供しているフレームワークまで含めれば,JavaScript開発者の相当数がTypeScriptを利用していることになる。
TypeScriptは,Apache 2ライセンス下で利用可能なオープンソースソフトウェアである。コントリビューションやフィードバックはTypeScript GitHubプロジェクトを通じて募集されている。いずれもTypeScriptコントリビューションガイドラインおよびMicrosoftオープンソースコード規範に従うことが必要だ。