技術とかの雑なToday I Learnedメモ

Types as Commentsの記事を読んだ

Types as Commentsの記事を読んだ

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

読んだ。

この記事について色々Twitterでコメントされているのを見た。

一般的にTypeScriptで使われている型宣言をJavaScriptのコメント(Types as Comments)として解釈し、型が間違っていたらエディタ上などではエラーを出すが、型が間違っていてもJavaScriptのランタイム上では型情報が無視されて普通に実行できるというもの。

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

ビルドしないで良いというのはそれはそうだと思う。トランスパイルによって参入障壁が高くなっているというのもたぶんそうで、最近は特に意識していないけどちょっと前までBabelやWebpackの設定のハードルが高すぎてめちゃくちゃ難しそうという感想を抱いていた人は多いはずだし自分も抱いていた。

トランスパイルする必要がなくなることで書いたコードをそのままポンと実行環境に乗せることができて、かつ型情報が(実行環境より手前までは)付くというのはなかなか良さそう、でもそんなにうまくいくのか……?

ちらほらTwitterで見たものを見返していたけど、JSXやenumみたいなものの扱いとかも悩ましそう。

giltayar/proposal-types-as-comments: ECMAScript proposal for type syntax that is erased - Stage 0

DeepLにかけてある程度読み進めてみた。

JSDoc、個人的にあんまり好きになれないので、Types as Commentsが実用化されたら面白そうだなとは思うけど、もしそうなったとしてもTypeScriptと同じ書き方ができるというわけではないと思うし、どうなるのか見ものだなあという感じがする。

Types as Commentsを解釈できるようにする場合はランタイムエンジンをアップデートしなくてはいけないと思う(表現あってるかな?)んだけど、そうなるとどのみち各ブラウザさんの実装を頑張ってくださいという感じになりそう。こういうのについていけないブラウザを切っていくしかないのだろうか。