プログラミングTypeScriptをざっと読んだので、ざっと感想を書いておく。

結論から言うと、JavaScriptをなんとなく知っていてこれからTypeScriptへ移行していくぞ、という人ならとりあえず手元に置いておくといい。

前提

まず読む前のぼくの状態は以下のような感じ。

  • JavaScript, ES3, ES5, ES2015ぐらいまではそれなりに知っている
  • それなりに日常的にJavaScriptを読み書きしている
  • 仕事ではTypeScriptが採用されているので、必要に応じてアドリブでTypeScriptを書いている
  • 本業はGo
    • 最近書いてないけどJavaもそれなり
  • Haskellをちょっとだけかじってる
  • C#ほとんど知らない

ぶっちゃけすでになんとなく知ってることのほうが多いだろうなと思って読み始めた。 が、全然そんなことはなかった。

感想

おすすめは3, 6章の型まわりの話。

リテラル型

まずリテラル型を誤解していたことに気づけてよかった。 アドリブでTypeScriptを読み書きしていたせいか、なぜかリテラル型はstring固有の機能だと思い込んでいたので衝撃だった。

型の世界で値による制限を加えるのはちょっと依存型っぽいような気もしたけど、単に取りうる値を制限するだけだから依存型を記述できるわけではない、のかな。 単に代数的データ型っぽくも使えそう。ちょっとパターンマッチ欲しくなるけど、タグ付けによる絞り込みみたいなエレガントなテクもあるし、表現力は十分そう。

変性

変性の話もずっと調べるのめんどくさくて放置してたところだったので知れてよかった。

Goはinvariantばっかりだし、Kotlinとかみたいにcovariantに扱いたいとき明示的に指示する言語仕様も見かける。 それらと比べてTypeScriptはJavaScriptとの相互運用の都合で絶妙な変性ルールになっているのが面白かった。

その他

強力な型演算子も魅力的。このあたりは直接使うよりもそれによって実現されている便利ライブラリとか触ってみたいなと思った。 なんか定番とかあるのだろうか。

たまに出てくる「なんとかの魔女が云々」みたいな謎ギャグについていけなかったけど、全体的に読みやすく書かれていてとても良い本でした。