TypeScript
6
どのような問題がありますか?

投稿日

更新日

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

TypeScriptのほうが動作が速い

TypeScriptのほうがJavaScriptより実行速度が速いという記述も見受けられました。高速化が見込める論拠として静的型付けが挙げられていました。

  • Udemy メディア - 「実行前に型を宣言するため、動作が早いこともTypeScriptのメリットです。」
  • レバテックキャリア - 「TypeScriptは静的型付けを利用することで、動的型付けのJavaScriptよりも処理速度を向上させることができます。」
  • パソナテック - 「TypeScriptは静的型付けの言語なのでコード内で型を宣言できるため、実行時に型を決める動的型付けのJavaScriptよりも動作が早くなります。」
  • テックキャンプ -「静的型付けは、プログラムの実行時に型を決定する動的型付けよりも動作が早いと言われています。」

TypeScriptはJavaScriptに変換し、JavaScriptの実行エンジン上でないと実行できません。変換の際に、型情報はすべて消されます。JavaScriptの実行エンジンが静的型情報を参考にしつつ実行速度を最適化することは原理上ないはずです。

また、TypeScriptからJavaScriptへの変換処理は、基本的に型注釈(や型に関する構文)を取り除くだけなので、JavaScript生成時に速度最適化のためのドラスティックな書き換えやチューニングもありません。

TypeScriptにはモジュールがある

JavaScriptにはモジュールがなく、TypeScriptにはモジュールがあるという記述もありました。

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

追記&所感

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ユーザー登録ログイン
suin
Qiita 4位/TypeScript入門書執筆中/TypeScripterのための座談会「YYTypeScript」主催/『実践ドメイン駆動設計』書籍邦訳レビュア/分報Slack考案/YYPHP主催/CodeIQマガジン執筆/株式会社クラフトマンソフトウェア創設/Web自動テスト「ShouldBee」の開発/TypeScript/DDD/OOP
この記事は以下の記事からリンクされています

コメント

動作速度のくだりはやばいミスリードですね

1
どのような問題がありますか?
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
6
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー