マイクロソフト、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
グローサリー配達のInstacartが新CEOにフェイスブック幹部のシモ氏を指名
シェアリングエコノミー
2021-07-10 18:05
デジタルサービスの“進化の第一歩”–リコー、データの重要度をスコア化する「仕事のAI」提供
IT関連
2021-06-18 15:35
「Windows 11 2023 Update」(23H2)リリース–Teamsがタスクバーに固定
IT関連
2023-11-02 02:06
「シン・テレワークシステム」にWebブラウザ版登場 MacやChromebookでも利用可能に
ネットトピック
2021-08-06 01:23
紀伊國屋書店、大学図書館向けに講談社電子書籍をサブスクモデルで発売
IT関連
2024-04-26 20:12
LastPassにセキュリティ侵害–8月のハッキングが原因
IT関連
2022-12-03 15:21
生成AI連動型広告の時代が来る–日本再参入のMicrosoft広告トップに聞く
IT関連
2023-07-06 22:17
名古屋大学、教育研究用・事務用端末のセキュリティ対策でカスペルスキーを導入
IT関連
2021-01-19 19:00
ホームオートメーションプラットフォームSpaceCore提供のアクセルラボが7億円調達、人材採用・開発強化
IT関連
2022-01-18 14:20
米政府機関、ブラックベリー製品の脆弱性で注意喚起
IT関連
2021-08-18 01:33
GitHub、ワークフローで必要な権限を監視・推奨するツールをベータ公開
IT関連
2023-06-28 15:43
IIJ、エンジニア育成の場「IIJアカデミー」を開設–現役社員がマンツーマン指導
IT関連
2022-11-23 03:51
大塚商会、20年通期は減収減益–コロナ禍も「大戦略II」で打開へ
IT関連
2021-02-02 21:11
NTT Com、市街地映像のビッグデータ活用基盤「モビスキャ」を24年度上期に提供
IT関連
2024-01-14 13:39