TypeScriptを書き始めて一ヶ月くらい経ったのだけど、まだまだ型を上手く使えている感じがしない。TSを書き始める前はPHPメインで書いていて、その時もある程度タイプヒンティングは使っていた。しかし、PHPは名称的型付けでTSは構造的型付けだし、PHPは実行時のタイプチェックで型レベルの計算とかもないので全然やることが違う。
で、今日こんな記事を見つけて読んでたのだけど、やっぱり難しい。 blog.andoshin11.me
型レベルの計算なのに、SQLの具体的な文が出てくる。。。はて? と疑問だったのだけど、それはおそらく「TSの型はチューリング完全」ということを理解すれば、なんとなく解消できた気がする。
TS の型システムはチューリング完全です.これは簡単に言い換えると,我々は TS の型だけで何でも作れるということです.
型でなんでも計算できるとなると、型レベルでやることと値レベルでやることの差はいったいどうなるのさ?ってことになるのだけど、まあそういう疑問を無視して全部やってしまうということもできるんだろう。
それに対して、まあそんなやり過ぎなくても…って反応も出てくるのかなと思う。
ここで、ライブラリ開発者とアプリケーション開発者とでは、気にすべき型のレイヤが違うみたいな話が出ている。
ライブラリを使う時に、裏で複雑な型定義がされているかもしれない。フレームワークを開発する時は、そういう型定義ができるスキルが要るかもしれない。
なるほど。けっきょく今後自分が開発したコードの中身を誰かが効率よく改善していく必要がある場合は、複雑な型定義をしない方が賢明だし、 ライブラリの開発の場合は基本的には使用者はその内部のコードを弄らないわけだし、強めに型安全にする必要性が高いからそこを頑張る。みたいなことなのかなと思う。
この辺の塩梅は、結局自分が複雑な型定義もなんとかできるくらいのレベルにならないとわからない気がする。(あと、ライブラリ開発してみるとか。)
この辺りは今後の課題にしておけば良さそう。
関連して読みたいけどまだ読み切れていない宿題。
あとこれの第六章も。
プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発
- 作者:Boris Cherny
- 発売日: 2020/03/16
- メディア: 単行本(ソフトカバー)