SEOに強いTypeScript入門記事がミスリードを招いていて絶望しかけた

「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は別にプロトタイプベースを廃止したわけではないので、ミスリードを誘う書き方だと思いました。

https://typescriptbook.jp/reference/values-types-variables/object/prototype-based-programming

##  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があるので、これもミスリードだと思われます。

[Udemy メディア]: https://udemy.benesse.co.jp/development/system/typescript.html
[レバテックキャリア]: https://career.levtech.jp/guide/knowhow/article/732/
[侍エンジニア]: https://www.sejuku.net/blog/93230
[パソナテック]: https://www.pasonatech.co.jp/workstyle/column/detail.html?p=2761
[テックキャンプ]: https://tech-camp.in/note/technology/103845/

## 追記&所感

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">レバテックさんはこの反響を見てか、一旦非公開にされて見直しを図られていらっしゃるようです。<br><br>他のメディアさんたちも内容を見直ししていただけるとありがたいです……😢<br><br>各メディアの記事から影響を受けたと見られるQiita投稿も現に存在し、やはり影響力があるので、TS界隈のためにも是非……🙏🏻</p>&mdash; suin・読者2万人『サバイバルTypeScript』公開中！ (@suin) <a href="https://twitter.com/suin/status/1530039011192221696?ref_src=twsrc%5Etfw">May 27, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">Udemyメディアさん、レバテックさんは内容を見直して頂いたようで、上記記事で指摘した引用部分は解消されています。<br><br>ご対応いただけて嬉しいです！😌</p>&mdash; suin・読者2万人『サバイバルTypeScript』公開中！ (@suin) <a href="https://twitter.com/suin/status/1530160786362212352?ref_src=twsrc%5Etfw">May 27, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">侍エンジニアさん、パソナテックさん、テックキャンプさんも本稿にて指摘した部分が解消されています。<br><br>これで、全メディア様にご対応いただけたことになります。ご対応いただきありがとうございます！😌</p>&mdash; suin・読者3万人『サバイバルTypeScript』公開中！ (@suin) <a href="https://twitter.com/suin/status/1534490426073264128?ref_src=twsrc%5Etfw">June 8, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">後日談です。<br><br>この件について、レバテックさんの中の方と話す機会がありました。<br><br>そこで知ったのですが、この件を機に、TSの記事にとどまらず、すぐに全記事の内容をエンジニアで総見直しされたそうです。<br><br>こういった対応をしてくださる会社さんもいることを知っていただきたかったので書きました😌 <a href="https://t.co/58d4cfWA4U">https://t.co/58d4cfWA4U</a></p>&mdash; suin・読者3万人『サバイバルTypeScript』公開中！ (@suin) <a href="https://twitter.com/suin/status/1552977895857225728?ref_src=twsrc%5Etfw">July 29, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>