ayumin.log

読みにくかったら脳内sedで整形してね

typescript入門者の戯言

typescriptはじめました

昨今JSの躍進が目覚ましい。 webページをちょっと動かすための言語だったはずが、今やReact / Vue などでwebページの中核を担っているし、サーバにも進出し始めた。

そんなわけで、JSには以前から関心はあった。だがイマイチモチベーションが上がらず、随分と放置していた。

モチベーションが上がらない理由は明確で、サーバサイドJSの環境をちゃんと把握できていないためである。

更に頻繁な機能追加を行いながらメンテをするようなものは今まで書いてこなかったので、今まで触る必要も感じていなかった。

環境の複雑さは、Go好きの人間としては中々耐え難い。
Nodeでインフラツールを作るのは酔狂だろう。元々webのための言語でツールに使う言語ではないと思う。

Goは一度作れば、よほどの事がない限り数年は使えるので、やはりインフラを考えると素晴らしく使い勝手が良い。

しかもGoなら外部ライブラリに依存せずとも、豊富な標準ライブラリで実装ができる。メンテがとても楽。

そんな理由があり、今まではGoを使うことが多かった。

これはサーバサイドJS/TSどちらにも言えることだが、Nodeに関してはLTSでも3年しかサポートされないという問題もある。

インフラは基本的に長期的なサポートが要求される。
環境を塩漬けせざるを得ないこともあるし、機能追加を頻繁にする場合もあれば、使えれば良いということもある。

なんでTS?

とはいえ、今後JSは間違いなくメジャー言語の1つになるだろう。
やはりフロントエンドという唯一無二の力を持つJSの力は大きい。

フロントではwasmが徐々に顔を出し始めたとはいえ、まだまだwasmの台頭には時間がかかる。

結局のところ、まだJSに頼るほかない。

JSでもIE対応は頭が痛い問題だろうが、まだ対応できるだけマシだ。wasmでは切り捨てる以外選択肢がない。

というところでJSはやらざるを得ないなぁという気にはなった。とはいえ動的型付け言語はあまり書きたくない。

型のない言語では極まれにperlを書くことはあるが、用途は一度しか使わない正規表現処理ぐらいのものだ。
運用するものに動的型付け言語を使いたいとは思えない。

となるとaltjs界では勿論、単一の言語としても採用例が増え続けており、シェアが伸び続ける可能性が高いTSをやるか、という結論に至った。

以上をまとめて一言で言うと、現状JS/TSをやると色々好都合そう、という話。

インフラ周りでも(特にAWSクラウド周りを触るときに)JS/TSの知識が欲しくなる機会が増えそうだし。

フロントやるときにも知っておくと便利だろうし。(最近インフラに求められるもの多くない?)

言語としてのTS

言語仕様自体ではあまり困らない。JSの文法さえ理解していれば割と直感的に書けるな、という印象。

オブジェクト指向に慣れていないとはいえ、ES6以降の文法はかなり一般的なものである。 JSしか使えない概念を覚えるわけではないから、あまりモチベが下がることもない。

だがNodeの標準モジュールがTSの型に対応していないことがあり、互換性はあるとはいえJSだけの知識もまだ必要そうだ。

言語としてはES5までの文法で書かれたものとES6以降のものが別物なので、JS/TSよりもES6以降か否か、みたいなところがある。

これがあまり好きではないが、まぁそのうち慣れる気がする。

ちなみにJSとGoの一般的な実行速度はあまり変わらないそうだ。(自分で調べたわけではないが)