マイクロソフト、JavaScriptに型宣言を追加しつつトランスパイラ不要の「Types as Comments」をJavaScript仕様策定会議のTC39に提案へ

今回は「マイクロソフト、JavaScriptに型宣言を追加しつつトランスパイラ不要の「Types as Comments」をJavaScript仕様策定会議のTC39に提案へ」についてご紹介します。

関連ワード (宣言、文字列型、活用等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


マイクロソフトのTypeScript開発チームは、JavaScriptのコードにTypeScript互換のアノテーション(注釈)を加えることで変数や関数などの型を宣言し、エディタなどのツールで型情報を活用可能にする一方、実行時にはJavaScriptエンジンがアノテーションを無視することでコードをトランスパイラで変換することなく実行可能なJavaScriptの新構文「Types as Comments」を、JavaScriptの使用を策定する「TC39」(Ecma International, Technical Committee 39)に提出する計画を明らかにしました。

fig

このマイクロソフトの発表には、TC39の共同議長であるRob Palmer氏やJavaScriptの生みの親であるBrendan Eich氏、Denoらが好意的なツイートを寄せています。

This proposal aims to improve the developer experience by making it even easier to use types in JavaScript.https://t.co/J3v9IEWbOJ

— Rob Palmer (@robpalmer2) March 9, 2022

I've been saying it'll take time (@Hixie: "Things that are impossible just take longer"), but it looks like "Types as Comments" is coming to ECMA-262, thanks to Microsoft, Bloomberg, Igalia, and many others on TC39. This is great news! https://t.co/HJalcNxgri

— BrendanEich (@BrendanEich) March 9, 2022

Great that the covers are finally lifted off this proposal!

We're excited to bring in our extensive experience with running TypeScript without a build step at @TC39. https://t.co/ok6mjuAcKg

— Deno (@deno_land) March 9, 2022

型宣言はほしいが、トランスパイラは面倒だし冗長なコメントもイヤ

JavaScriptのように変数の型を宣言せずに文字列や数字を自由に代入して演算できるプログラミング言語は、一般にタイピング量が少なく、気軽で迅速にプログラミングできる利点があります。

しかし間違った値を代入したり、本来なら演算するべきでない変数同士を演算させてもエラーにならずバグの原因に気づきにくいため、大規模なアプリケーションの開発では変数や型を宣言できるプログラミング言語が望ましいと考えられています。

そこでJavaScriptを用いた大規模開発では、JavaScriptの構文を拡張して型宣言などを可能にした、TypeScriptに代表されるいわゆるAltScriptによってプログラミングを行うことがよく行われています。

ただしTypeScriptなどのコードは、そのままではWebブラウザやNode.jsなどのJavaScriptエンジンでは解釈できずエラーになるため、実行前にトランスパイラと呼ばれる変換プログラムによってJavaScriptに変換する作業が必要になります。

トランスパイラの手間を省くためにJavaScriptのコメントとして型情報を記述する方法なども存在しますが、この場合はコメントが冗長になり、コードをメンテナンスする手間もかかるという見方があります。

トランスパイラなどを使わずそのまま実行できて、しかも簡潔に型宣言を記述できる何らかの記述方法が望ましい、と考えられるわけです。

実行時には無視されるアノテーションをJavaScriptに追加

今回マイクロソフトが提案した「Types as Comments」は、JavaScriptのコメントではなくコード中にアノテーションとしてTypeScript互換の型宣言を簡潔に記述します。下記がその例です。

アノテーションは「:」で始まり、そのあとに型を記述します。ここでは変数xがstring(文字列)型として宣言されています。これによりTypeScript対応ツールなどでは型情報を活用した機能を提供できます。

この例の後に、次のようなコードが続くとします。

型の情報を活用するツールでは「x=100;」は文字列型に対して数値を代入しようとしているため、間違った代入としてエラーを表示します。一方でこれをJavaScriptエンジンで実行すると、型情報は無視されそのままエラーにならず実行されることになります。

このようにエディタなどのツールでは型情報を活用しつつ、そのまま実行できるこの提案の利点を、マイクロソフトはブログ「A Proposal For Type Syntax in JavaScript」で次のように説明しています。

A developer could get instant type-checking feedback in an editor with TypeScript support, run TypeScript on the command line, and add TypeScript as part of their CI tasks. The biggest difference is that because we would not need a build step, we would dramatically lower the barrier to entry for JavaScript devs to experience the power of types and great tooling.

開発者はTypeScriptをサポートしたエディタで即座に型チェックのフィードバックを得ることができ、コマンドラインでTypeScriptを実行し、CIタスクの一部としてTypeScriptを利用できる。最大の違いは、ビルドする必要がないため、JavaScript開発者が型と優れたツールの能力を体験するための参入障壁が劇的に低くなることだ。

そして、あくまでもJavaScript実行時には型宣言は無視されることを強調しています。

Our team isn’t proposing putting TypeScript’s type-checking in every browser and JavaScript runtime – nor are we proposing any new type-checker to be put in the browser. We think doing that would cause problems for JavaScript and TypeScript users alike due to a range of issues, such as runtime performance, compatibility issues with existing TypeScript code, and the risk of halting innovation in the type-checking space.

私たちのチームは、TypeScriptの型チェックをすべてのブラウザとJavaScriptランタイムに入れることを提案しているわけではないし、ブラウザに新しい型チェッカーを入れることを提案しているわけでもない。それはランタイムの性能や既存のTypeScriptコードとの互換性の問題、そして型チェックの分野でのイノベーションを止めてしまうリスクなど、JavaScriptとTypeScriptのユーザーにさまざまな問題を引き起こすものと考えている。

3月中にTC39の会議で議論を開始

マイクロソフトによると、この提案は3月中に行われているTC39のミーティングに提出され、正式に議論を開始するかどうかの検討がはじまるとのことです。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
関西電力、最大3万4000ユーザーを収容するVDI環境を稼働
IT関連
2023-05-12 19:55
富士通、ローカル5Gの屋外検証環境を整備
IT関連
2022-06-23 15:53
東芝デジタルソリューションズ、ビッグデータ・IoT向けデータベースを提供
IT関連
2022-04-27 05:28
「日本カメラ」休刊 会社も解散、73年の歴史に幕
企業・業界動向
2021-04-16 03:30
米国務省、サイバー犯罪情報に1000万ドルの報奨金(暗号通貨で支払い)
アプリ・Web
2021-07-17 08:19
クリックテック、2024年度の事業戦略を発表–“新生Qlik”でロゴも刷新
IT関連
2024-03-28 22:26
マイクロソフト、GPT-3.5やDALL・E 2のAIモデルを含む「Azure OpenAI Service」正式に提供開始。まもなくAzure上で学習させたChatGPTなども実行可能に
Microsoft
2023-01-18 04:45
「Apple Vision Pro」向けの新OS「visionOS」–開発者が押さえておくべき17のポイント
IT関連
2023-06-22 12:35
日本酒作りの要となる品温管理を強化、IoT酒造品温監視システム「もろみ日誌」でラトックシステムと第一工業がタッグ
フードテック
2021-05-18 11:35
単一のクラウドプロバイダーに依存するリスクとは–ガートナー調査
IT関連
2023-11-04 15:20
法務案件管理「GVA manage」、AIチャットボット機能で回答の再リクエストを可能に
IT関連
2024-02-15 03:47
日立ソリューションズ、製造業の脱炭素を支援するトータルソリューションを提供
IT関連
2023-09-01 09:57
「映像制作の現場を再発明」–パナソニック コネクト、リモートでの作業を実現する新サービス
IT関連
2022-06-12 11:53
拡大する企業変革の要請に結果まで応える–アビームの山田社長
IT関連
2023-06-01 09:03