690
152

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-05-26

「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にはモジュールがあるという記述もありました。

JavaScriptにも7年前(ES6)からES Modulesがあるので、これもミスリードだと思われます。

追記&所感

690
152
16

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
690
152

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?