@akiya これですか?
JavaやSwiftのように、クラスベースで言語の設計段階から型を中心に組み上げられた静的型言語と異なり、TypeScriptはJavaScriptに後付けで型を適用するアプローチを取っていることを忘れてはいけません。
その結果として、
実行時に型が存在しない(完全に消える)
JavaのGenericsだって消えてるしSwiftでもProtocol使うと基本的に消えるじゃん、でおしまい、でいいと思います。だって理解してないんだもん。
あとはせいぜい、大学院で型理論でも勉強しなおしておいで、Types and programming language.の様々な型システムを学んで性質とそれによるメリットデメリットを学んだ上で、さらにTypeScriptみたいな型のない所にちょっとずつ付けていけるようなアプローチは、「Gradual Typing」って言われてて10年以上散々研究されてるから、その知見も踏まえて議論しなおしてね、でおしまいでいいと思います。
といった、言語に依存しない設計と運用の実力の部分であり、全然素のnode.jsでも問題ありません。
それならアセンブリ言語でも書いてな、で返してもいいかもねw
@akiya 少なくともTypeScriptが、JavaScriptのスーパーセットになれるようにするために、型システムに若干無理ができてしまっている、というの自体はそうなので、ドメインみたいなビジネス寄りの部分は専門にメンテナンスしたりレビューしたりする人が居てもいいかもですねえ(ビジネス分かってない人が変な抜け穴作ったりすると困る…けどでもそれはどの型システム使うかはあんま関係ない気もする…)。
全体的に煽ってバズるための文章で技術や理論はおざなりなんで、これ読んで何か技術的な事を考えるのはあんまり建設的でも生産的でも精神衛生上良くもない気はしましたw
型の信頼性の限界
TypeScriptの型システムは万能ではなく、any や @ts-ignore といった抜け道が存在するため、型があることが必ずしも安全性を保証するわけではありません。
これだって、筆者に大好きなJavaにはObject型があるしw
この「型システムは万能ではなく」っていう表現で、型システムについてなんかわかってる風の事を書いてるけど何も分かっておらず、健全性と完全性の区別もついてないまま何か怒りを論理的に見える(ぼくには見えないが…)文章で書いてるだけだって分かっちゃうのですわよ。
そこ差っ引いてもこの人の大好きなJavaにも
Integer[] array = ...;
Object[] array2 = array; // 通るw
array2[1] = "こんにちわ"; // ランタイムエラー
という「万能じゃないケース」があるわけだし?
誰も
考えてないだろw
藁人形論法もいいところすぎるw
そして「TypeScriptにはリスクがある」と言うにも、その著者の考えた最強の代替案にもあるはずのリスクが出されててないから、結局ブーメランが返ってきてるだけだし。
Qiitaってもしかして生成AIで破壊しなくてもそのうち自壊しますかね?その方が省エネで良いかな