次世代JavaScript「AltJS」の注目株!Googleも採用した新世代のスクリプト言語TypeScriptとは?特徴や強み、JavaScriptとの違いを解説

最終更新日:2022年5月27日

レバテックキャリアは
ITエンジニア・Webクリエイター専門の転職エージェントです

(2022.5.27)
当記事内の記述に一部誤りがございました。
深くお詫びいたしますとともに、謹んで訂正させていただきます。


TypeScriptは、JavaScriptの代替になるプログラミング言語です。近年はJavaScriptの後継言語がいくつか生まれており、その中でも特に有力な言語として注目されています。長年にわたり高いシェアを維持してきたJavaScriptの後継ですから、エンジニアのキャリアパスに与える影響も少なくないはずです。ここでは、TypeScriptの概要と特徴、強み、JavaScriptとの違いなどを解説しています。

1. TypeScriptとは?

まずTypeScriptの概要と特徴について解説します。

JavaScript後継の最有力言語「TypeScript」

TypeScriptは、Microsoft社が2012年に開発したJavaScriptのスーパーセットです。スーパーセットとは「上位互換」のことで、JavaScriptが持つ機能を維持しつつ、追加の機能をそなえた言語と言うことができます。

TypeScriptはなぜ生まれた?

JavaScriptは当初、Netscape Navigatorで動くスクリプト言語として開発されました。
当時はHTMLの補助的な言語としてしか考えられていませんでしたが、2000年代に入ると、GoogleMapの台頭によってJavaScriptでも立派なWebアプリケーションが作れることが分かりました。そして、JavaScriptでの開発の規模が大きくなっていくにつれて、開発のスケール性が問題になりました。JavaScriptでは型定義が行えないため、コードに変更を加えるとどのような影響があるか検証するのに時間がかかるのです。

こうした問題を解決するために登場したのがTypeScriptです。TypeScriptでは型があるおかげで、開発者は安心してコードを変更できるようになり、プログラムを動かさずとも、バグが無いか未然に検知できるようになりました。このようにTypeScriptは大規模な開発における生産性を大きく向上させました。

TypeScriptは有力なAltJS

また、TypeScriptは「AltJS」のひとつであり、次世代のJavaScriptの最有力候補です。AltJSとは、「Alternative JavaScript」の略称で「JSの代わりになるもの」という意味が込められた造語です。具体的には、JavaScriptより優れた機能を持ち、コンパイル(トランスパイル)後はJavaScriptのコードが生成される言語を指します。

TypeScriptの基本的な構文はJavaScriptを踏襲しているため、JavaScriptを習得している人間ならば短期間で身に着けることができるでしょう。また、JavaScriptができることはTypeScriptでも実現可能なため、ほとんど前提知識を持たないプログラマーであっても、リファレンスを見ながら開発を続けていくことができます。

TypeScriptは、Googleが2017年に社内の標準開発言語とするなど話題性があり、近年は知名度があがっています。日本国内ではまだまだマイナーな存在ですが、徐々にJavaScriptからの移行が進んでいくと思われます。

TypeScriptの特徴

では、TypeScriptの特徴を整理してみましょう。

静的型付け(型定義)

TypeScriptの最大の特徴は「静的型付け」が利用できる点です。静的型付けとは、変数やメソッドの戻り値に特定の「型(string、intなど)」を指定できる機能を指します。ちなみに、型指定を行わない場合は「動的型付け」と呼ばれます。TypeScriptは「型の定義ができるJavaScript」と呼ばれており、静的型付けは重要な拡張のひとつでもあります。

静的型付けが可能になると、変数や戻り値に指定外のデータが入るようなコーディングを行った場合、コンパイル時にエラーが出力されます。つまり、実際にプログラムを稼働させる前にバグの存在を知ることができるのです。

インターフェースとクラスの定義が可能

TypeScriptは、C#やJavaなどと同様にインターフェースとクラスの定義が可能です。ちなみにクラス構文はJavaScriptでもES6で導入されています。

基本構文はJavaScriptとほぼ同じ

TypeScriptは、JavaScriptの拡張版であり、JavaScriptのコードはTypeScriptとして使用することができます。具体的には、if文やfor文のような基本構文はそのまま流用することができるでしょう。

JavaScriptの知識を流用しながら基本的なコーディングを行えるため、JavaScriptからの移行コスト(学習コスト)は非常に低いです。ちなみにTypeScriptには、JavaScriptの最新仕様が含まれるため、JavaScriptの知識を補強するような使い方もできます。

ただし、TypeScriptのコンパイラに対して何らかの制約(オプション)を付与している場合は、JavaScriptコードに対してコンパイルエラーが発生することもあります。

 

2. TypeScriptの強み

次にTypeScriptの強みについて解説します。ここで言う強みとは、「開発者にとってのメリット」を指します。

可読性が高い

同じ処理をJavaScriptとTypeScriptで記述して比較すると、大半の人は「TypeScriptが読みやすい」と感じるようです。これは、「静的型付け」の効果によるものです。

JavaScriptとの互換性

前述したように、TypeScriptはJavaScriptのスーパーセット(上位互換)です。つまり、JavaScriptの開発・実行環境がそのままTypeScriptの開発・実行環境になるわけです。また、JavaScriptで作成したコードをTypeScript側から呼び出すことや、JavaScript向けのライブラリ・フレームワークをTypeScriptで使用することもできます。

強力な型推論

型推論とは、変数や関数の引数・戻り値の型を指定しなくても文脈から自動的に型づけをしてくれる機能です。TypeScriptはこの型推論が可能であり、プログラムの実行前に型に関するエラーの大半を検知することができます。

例えば、数値(number)が入るべき引数に文字列(stringなど)が入力された場合「number型の引数にstring型を割り当てることはできません」といったメッセージが出力されます。このエラーメッセージは、コンパイル時に加えコーディングの最中にも確認することが可能です。これは、後述のコード補完・エラーチェック機能との連携によるものです。

ジェネリック(ジェネリクス)

ジェネリックとは、関数やクラスの中で使う型を抽象化し、汎用的に使える状態を創り出す機能です。一般的には、主に汎用的なクラス、関数などを定義する際に使用されます。ごく簡単に言うと「単一のコードで複数のデータ型に対応できるような処理を実装する機能」ですね。

一般的に、静的型付けを行う言語では、関数やクラスの定義時に、引数のデータ型・戻り値の型などを指定します。しかし、全く同じ処理にもかかわらず「型」だけが異なる場合には、同一のコードを何度も記述し、呼び出さなくてはなりません。

当然ながらコードの記述量が増え、可読性は低下し、場合によってはパフォーマンスにも影響があります。この非効率な状態を解決する機能がジェネリックです。

ジェネリックを活用すると、関数やクラスを呼び出す際に型の情報を渡すことが出来るため、型を固定せずに処理を記述することができます。また、わざわざ同一の処理を何度も記述する必要がありません。

エディタによるコード補完やチェックメッセージが強力

TypeScriptでは、エディタが提供する各種支援機能を利用できることがあります。

例えば、TypeScriptの入力支援機能をサポートしているエディタであれば、型定義から入力候補が表示されます。また、静的型付けと異なるデータが入る可能性のあるコードに対しては、チェックメッセージが表示されます。

コード補完やチェックメッセージが無い場合でも、型推論によってコンパイル時にエラーが出力されるため、実行時エラーは防ぐことができるでしょう。しかし、こうした機能を活用すれば、コンパイルを実行する前にエラーを検知できるため、開発効率が向上します。現役のプログラマーが最もメリットを感じやすい機能のひとつと言えます。

ちなみにTypeScript向けのエディタとしては、開発元のMicrosoft社がリリースしている「Visual Studio Code」やオープンソースの「Atom」などがおすすめです。

3. TypeScriptとJavaScriptの違い

ここで、TypeScriptとJavaScriptの違いを整理しておきましょう。前述したようにTypeScriptはJavaScriptの上位互換(スーパーセット)です。TypeScriptには、JavaScriptから拡張された点がいくつも存在します。両者の違いは、この拡張に含まれると考えて良いでしょう。例えば、次のような点です。

型付けの違い

前述したようにTypeScriptは静的型付けが可能な言語です。これに対してJavaScriptは動的型付けを行います。

動的型付けは、データ型の宣言が不要で、プログラム側が自動的に型を決定します。動的型付けの言語としては、JavaScript・Ruby・Pythonなどが代表的です。

一方TypeScriptが採用する静的型付けは、データ型を明示的に指定します。

動的型付けは、型を宣言する必要がないことでコードの記述量を少なくできることがメリットです。また、型の変動が激しい状況や規模の小さいプログラムへの実装に適しています。ただし、データ型と実際のデータが合致しているかは、プログラムを実行してみるまでわかりません。つまり、「実行時エラー」を防ぎにくいのです。

これに対して静的型付けは、あらかじめデータの型を宣言してから開発を行うため、実行時エラーを著しく削減することができます。コンパイル時にエラーが出力されるほか、後述するエディタの機能でも型のエラーを確認できるからです。

アクセス修飾子の有無

TypeScriptではJavaScriptにはなかったクラスのフィールドやメソッドへのアクセス修飾子が存在します。これはJavaやC#といった他のオブジェクト指向言語にも取り入れられている機能で、インスタンスのフィールド・メソッドにクラス内からしかアクセスできないようにしたり(private)、その逆にどこからでもアクセスできるようにしたり(public)できます。

この機能を利用することで、インスタンス内のフィールドを不用意に変更してバグを生むようなコードを減らすことができます。
ちなみに、JavaScriptでもES2022からpublic・privateだけですが導入されています。

 

インターフェースの有無

TypeScriptにはインターフェースがあり、JavaScriptにはありません。

ここで言うインターフェースとは、一般的な意味(二つの異なる領域の接点)とは異なります。オブジェクト指向プログラミングにおけるインターフェースとは、「実際の処理は持たないが、プログラムに対して特定の約束や振る舞いを付与する機能」です。

インターフェースを使用することで、型やクラスだけでは実現できない処理(多重継承など)を実装することができます。例えば、インターフェースで、メソッドを定義していれば、そのインタフェースを実装するクラスはそのメソッドを必ず実装しないといけないという具合に、クラスの振る舞いを指定できます。

引数の扱い方

JavaScriptでは、全ての引数が任意であり、状況に応じて自由に省略することが可能です。一方、TypeScriptでは、関数の引数名のあとに「?」を付与することで、引数自体をオプショナルにすることができます。つまり、「引数が無くてもコンパイルエラーにならない」という印です。

4. TypeScriptの将来性

最後にTypeScriptの将来性について解説します。結論から述べると、「TypeScriptの将来性は十分に高い」と言えるでしょう。その理由は次のとおりです。

Google上での検索回数は年々増加傾向

Google上での検索回数をもとにプログラミング言語をランク付けするPYPL(PopularitY of Programming Language)によれば、TypeScriptは2020年は10位、2021年は9位に位置しています。(※)ちなみに、JavaScriptの検索回数は3位(2021年)です。しかしこれは、JavaScriptの歴史が長く、使用者も多いことを考えれば当然の結果と言えるでしょう。

参考:PYPL「PYPL PopularitY of Programming Language index」

JavaScriptからの移行が容易で機能は強力

TypeScriptはJavaScriptを素直にグレードアップした言語です。「全く別の言語」とまでは言えないものの、互換性の高さを維持しつつ新たな概念を導入しています。オブジェクト指向の普及が進んでいる現代では、JavaScriptに比べて高機能なTypeScriptの評価が高まっていくでしょう。特に「移行のしやすさを維持しつつ、扱いやすくなった」という点は強力なアピールポイントです。

メジャーなライブラリやフレームワークに対応

TypeScriptは、「Angular」「Vue.js」「React」などメジャーなJavaScriptライブラリに対応しています。プログラミング言語の人気は、ライブラリやフレームワークの豊富さや使いやすさにも左右されます。また、慣れ親しんだフレームワークを使い続けられることで、TypeScriptへの移行コストも小さくなります。豊富なJavaScriptライブラリやフレームワークは、そのままTypeScriptの人気を支える資産となるわけです。

ITエンジニア・Webクリエイターの転職ならレバテックキャリア

レバテックキャリアはIT・Web業界のエンジニア・クリエイターを専門とする転職エージェントです。最新の技術情報や業界動向に精通したキャリアアドバイザーが、年収・技術志向・今後のキャリアパス・ワークライフバランスなど、一人ひとりの希望に寄り添いながら転職活動をサポートします。一般公開されていない大手企業や優良企業の非公開求人も多数保有していますので、まずは一度カウンセリングにお越しください。

転職支援サービスに申し込む

また、「初めての転職で、何から始めていいかわからない」「まだ転職するかどうか迷っている」など、転職活動に何らかの不安を抱えている方には、無料の個別相談会も実施しています。キャリアアドバイザーが一対一で、これからのあなたのキャリアを一緒に考えます。お気軽にご相談ください。

「個別相談会」に申し込む

プロのアドバイザーがあなたのお悩みや疑問にお答えします

- 転職個別相談会開催中 -

相談内容を選択してください

※転職活動や求人への応募を強制することはありません

人気の求人特集

内定率が高い

人気の記事

スキルアップ記事トップへ

JavaScriptの求人・転職一覧