Microsoftは、2022年3月に開催されたECMAScriptの仕様策定を議論するTC39で、型注釈を追加する「Types as Comments」を提案した。提案内容はTC39で承認され、実装に向けた議論を開始するStage 1に到達した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2022年3月9日(米国時間)、JavaScriptに型注釈を追加する「Types as Comments」を開発者ブログで提案した。同提案は2022年3月28〜31日(米国時間)に開催されたECMAScript(JavaScriptの標準仕様)の言語仕様を策定する「TC39(Technical Committee 39)」の総会で承認され、実装に関する議論を開始するStage 1に到達した。
Microsoftによる提案は、開発者がJavaScriptコードに型注釈を追加することで、外部ツールの型チェッカーで型情報をチェックできるようにするものだ。JavaScriptエンジンはコードを実行する際、型をコメントとして扱う。TypeScriptやFlowなど、静的型付けに対応するJavaScriptのスーパーセットで書かれたプログラムを、トランスパイル(JavaScriptへの変換)なしで実行できるようにし、開発速度の向上を目指している。
Microsoftは型注釈を追加することで、イテレーション時間の短縮とビルドステップの削減により「より速く、よりシンプルに」を実現できるとしている。
JavaScriptでは型注釈がネイティブにサポートされていない。一方で「Visual Studio」や「Visual Studio Code」のようなエディタでは、.jsファイルを作成し、次のように、JSDocコメントの形で型を記述できる。
これらは単なるコメントであるため、JavaScriptエンジンに無視され、コードの実行方法に一切影響しない。だが、TypeScriptはこれらを利用して、コード補完やリファクタリングなど、より良いコーディング環境を提供している。ファイルの先頭に「// @ts-check」というコメントを追加したり、checkJsを使ってTypeScriptコンパイラでこれらのファイルを実行したりすることで、型チェックを追加することもできる。
Types as Comments提案によって可能になる、上記のJSDocコメントと同等のTypeScript構文は次のようになる。
JSDocコメントは一般的に冗長である上、TypeScriptでサポートされている機能セットのサブセットしか提供しない。その一因は、JSDocコメント内で表現力豊かな型構文を提供することが難しい点にある。
Types as Commentsのアイデアは、TypeScript構文における非常に大きなサブセットが、JavaScriptのソースファイルにそのまま表示され、コメントとして解釈されるようにすることだ。JavaScriptエンジンがコメントを無視する一方、TypeScriptやFlowなどのツールがコメントを利用できるようになり、ツールによる型チェックや高度な編集体験を維持しながら、開発におけるビルドステップを不要にできる。
Microsoftによる提案で何が可能になるかを、次の図で説明している。
開発者は従来と同様に、TypeScriptをサポートしたツールで型チェックのフィードバックをすぐに得ることができ、コマンドラインからTypeScriptを実行したり、CI(継続的インテグレーション)タスクの一部としてTypeScriptを追加したりできる。ビルドステップが不要になることで、JavaScript開発者が型と優れたツールの力を体験するための障壁が、劇的に低くなる。
2022年4月現在、Types as Commentsの提案は「type-annotations」という名称に変更され、TC39のGitHubリポジトリで管理されている。
Copyright © ITmedia, Inc. All Rights Reserved.