僕がTypeScriptを最善手の言語として認識している理由

いまのところ僕は、TypeScriptは決して理想ではないけど、最善手の言語だと認識していて、僕のフロントエンド技術に対するスタンスという先日に記事にもそういうこと書いてたんですけど、なぜTypeScriptを最善手だと認識しているか?を記事にしてみます。

VSCode の存在

正確にはTypeScript Language server が持ってる機能ですが、VSCodeは他のあらゆるIDEやテキストエディタと比較しても、軽量な動作を誇るエディタ・IDEでありながら、強力な補完、tipsでドキュメント表示などの機能を持っています。

ES Modules

TypeScriptのベースであるECMAScriptのモジュール仕様も良いものです。

歴史的経緯とDOM/ブラウザ仕様とガラの悪いコードを除けば、ECMAScript のコードではグローバルを利用しません。

モジュールは export され、使いたいときには明示的に import します。

Ruby のような言語では require されたモジュールは、グローバルな名前空間に対して定義をしたり、コードを変更したりします。

ECMAScriptでもグローバルな名前空間に対して、様々な行儀の悪いことはできますが、そういうのはガラの悪いヤカラコードとしか認識されません。

名前空間の衝突を気にする必要はありませんし、必要なものだけ import すれば、グローバルめいたものにおける問題は回避できます。シングルトンとか、single source is truth とか言い出さなければですが。

ES2015+

不満・不足はあるにせよ、それでも他のすべてのメジャーな言語と比べて極端に劣る要素はなくなったのが ECMAScript® 2015 以後(ES2015+)です。ES2015+は、様々な言語、オブジェクト指向、関数型言語などから影響を付けているマルチパラダイム言語です。

特に最近では言語仕様やライブラリ・フレームワークに、関数型言語の思想が多く流入しています。

TypeScriptのバランスの良い型宣言

TypeScriptは、もともと動的型付け言語であるECMAScriptに、型アノテーションを追加したような言語であり、初期(1.x時代)よりは方針が大分丸く現実的になったことによって、現実的な落とし所を狙った言語です。

某言語のようなガチガチで厳密な型宣言にこだわるわけでもなく、そして他の多くの言語よりもボイラープレートや儀式めいたコードを必須としなかった仕様は、ちょうどECMAScriptに型を足したらこうなるのが理想みたいな仕上がりです。

筆者はそういう理由ではGoも好きですが、やっぱりgenericsは必要なんや……。

TypeScript固有のいくつかの押し付けめいたものはだいたい受け入れられずに排除されてきました。tslint も無事滅びました。public/private キーワードもいつの間にか見かけなくて済むようになりました。

そういう意味では色々な力関係が働いたことで、結果論として、奇跡的にいいバランスを取ってる言語かもしれません。

まとめ

色々あってバランスの良い言語だと思います。以上。

この記事が気に入ったらサポートをしてみませんか?