「TypeScriptとは」などシングルワードの検索結果に強いTypeScript入門記事の多くに、誤解を招く内容があることを確認しています。
以下にあげる記事を参考にされた方は情報のアップデートをしていただきたいですし、記事を公開しているメディアにおきましては内容を見直していただけるとありがたいです。
TypeScriptならクラスが書ける
「JavaScriptにはクラスがない、TypeScriptにはクラスがある」「ゆえに読みやすい短いコードが書ける」といった記述が見られますがこれは誤解です。
- Udemy メディア - TypeScriptとJavaScriptの違い「TypeScriptではクラスの作成ができる」
- 侍エンジニア - 「TypeScriptでは、JavaScriptでできなかった「クラス」の作成を実現しています。複雑で大規模な開発を行うとき、JavaScriptではコードが長たらしくなっていましたが、TypeScriptではそれを解消することが出来ます。」
- パソナテック -「JavaScriptでは使えなかったクラスの生成が可能なので、JavaScriptでは冗長になりがちなコードの記述を大幅に簡略化できるようになりました。」
- テックキャンプ - 「TypeScriptではJavaScriptではできないクラスの作成が可能です。」
JavaScriptでもES6(2015年)からクラス構文があるので、7年もたった今(2022年)となってはかなりの時代錯誤な気がします。
TypeScriptはクラスベース
「JavaScriptではクラスがない、TypeScriptにはある」という誤った前提があってか、「JavaScriptはプロトタイプベースだが、TypeScriptはクラスベース」という表現も見られました。
- 侍エンジニア - 「そもそもTypeScriptはJavaScriptを拡張して作られた言語ですが、JavaScriptとは違い静的型付けのクラスベースオブジェクト指向言語になっています。」
- レバテックキャリア - 「TypeScriptはクラスベースのオブジェクト指向言語です。一方、JavaScriptは「プロトタイプベースのオブジェクト指向スクリプト言語」と言えます。」
- パソナテック -「TypeScriptは、JavaScriptに省略可能な静的型付けとクラスベースオブジェクト指向を加えた、JavaScriptの厳密なスーパーセット(上位互換)となっています。」
JavaScriptがクラス構文でクラスベースっぽいのコードが書けるようになったことと、TypeScriptは別にプロトタイプベースを廃止したわけではないので、ミスリードを誘う書き方だと思いました。
TypeScriptのほうが動作が速い
TypeScriptのほうがJavaScriptより実行速度が速いという記述も見受けられました。高速化が見込める論拠として静的型付けが挙げられていました。
- Udemy メディア - 「実行前に型を宣言するため、動作が早いこともTypeScriptのメリットです。」
- レバテックキャリア - 「TypeScriptは静的型付けを利用することで、動的型付けのJavaScriptよりも処理速度を向上させることができます。」
- パソナテック - 「TypeScriptは静的型付けの言語なのでコード内で型を宣言できるため、実行時に型を決める動的型付けのJavaScriptよりも動作が早くなります。」
- テックキャンプ -「静的型付けは、プログラムの実行時に型を決定する動的型付けよりも動作が早いと言われています。」
TypeScriptはJavaScriptに変換し、JavaScriptの実行エンジン上でないと実行できません。変換の際に、型情報はすべて消されます。JavaScriptの実行エンジンが静的型情報を参考にしつつ実行速度を最適化することは原理上ないはずです。
また、TypeScriptからJavaScriptへの変換処理は、基本的に型注釈(や型に関する構文)を取り除くだけなので、JavaScript生成時に速度最適化のためのドラスティックな書き換えやチューニングもありません。
TypeScriptにはモジュールがある
JavaScriptにはモジュールがなく、TypeScriptにはモジュールがあるという記述もありました。
- レバテックキャリア - 「TypeScriptにはモジュールがありJavaScriptにはモジュールがありません。」
JavaScriptにも7年前(ES6)からES Modulesがあるので、これもミスリードだと思われます。
追記&所感
レバテックさんはこの反響を見てか、一旦非公開にされて見直しを図られていらっしゃるようです。
— suin・読者2万人『サバイバルTypeScript』公開中! (@suin) May 27, 2022
他のメディアさんたちも内容を見直ししていただけるとありがたいです……😢
各メディアの記事から影響を受けたと見られるQiita投稿も現に存在し、やはり影響力があるので、TS界隈のためにも是非……🙏🏻
Udemyメディアさん、レバテックさんは内容を見直して頂いたようで、上記記事で指摘した引用部分は解消されています。
— suin・読者2万人『サバイバルTypeScript』公開中! (@suin) May 27, 2022
ご対応いただけて嬉しいです!😌
侍エンジニアさん、パソナテックさん、テックキャンプさんも本稿にて指摘した部分が解消されています。
— suin・読者3万人『サバイバルTypeScript』公開中! (@suin) June 8, 2022
これで、全メディア様にご対応いただけたことになります。ご対応いただきありがとうございます!😌
後日談です。
— suin・読者3万人『サバイバルTypeScript』公開中! (@suin) July 29, 2022
この件について、レバテックさんの中の方と話す機会がありました。
そこで知ったのですが、この件を機に、TSの記事にとどまらず、すぐに全記事の内容をエンジニアで総見直しされたそうです。
こういった対応をしてくださる会社さんもいることを知っていただきたかったので書きました😌 https://t.co/58d4cfWA4U