TypeScriptは型安全じゃないとよく言われているけど、それが「すばらしい」と表現しているのが新鮮だったので以下の記事を読んだ
TypeScriptは静的型付けによってコードの安全性を向上させるが、型安全とは言えない
その理由は以下
- 型アサーション(Type Assertions)で型チェックを無視し異なる型に強制的に変換できる
- any型やunknown型の存在
- コンパイル時に型チェックを行うが、実行時には型の存在が消える
- 型ガードで複雑な型をすべて網羅することは難しい
- 配列やオブジェクト内の複雑な型の組み合わせに対しては十分に機能しないことがある
などなど
それでも記事の筆者はTypeScriptはよいものと述べている
「雑」「型安全じゃない」というと、TypeScriptを悪く言っていると思われるかも知れませんが、まったく逆です。
結論、型安全じゃなくても型解析器として便利であるから「すばらしい」ということだった
記事の筆者がRubyのための型解析器TypeProfの開発者とのことで、型に詳しい方
そういう方々にとって、型安全じゃなくても便利な型解析器が存在するというのは良いことみたい
TypeScrpiptが完全な型安全を目指していないというのは、記事ので引用されているTypeScrptの設計者(Anders Hejlsberg氏)のYoutube動画でそう発言されている
If you can't achieve perfection then you don't even try to go there and that means you cut out a whole bunch of possible things that you could do that you might not be able to prove soundness for, but we don't have that restriction and that actually makes our work very interesting because we can go in places where people typically don't go.
https://www.youtube.com/watch?v=AJV43tjKtq8&t=840s
個人的にはTypeScriptがあえてそういう方針で開発していることを知れてよかった
記事の筆者の本は面白そうなので読んでおきたい