EY-Office ブログ

TypeScriptはフロントエンド開発の大きな力になる

実はつい最近になって TypeScript を使ってみました、そして TypeScript の良さがわかりました。

https://www.typescriptlang.org

JavaScriptの問題点

私は長らく Lisp や Ruby のような動的型付けプログラミング言語(変数等に型を指定しないプログラミング言語)を使ってきたので、 同じく動的型付け言語の JavaScript も特に困らず、なぜ JavaScript に型宣言が要るんだろう? と思っていました。

しかし、研修で JavaScriptを教えていると Java, C# を使って来た受講者達は、演習でちょっとした間違いに気づかずつまずいています。

その原因には、JavaScriptの寛容過ぎる言語仕様だと思います。
未定義の参照が実行しないと判らない、関数の引数が間違っていてもエラーにならない、違う型のデータを演算しでも適宜変換され実行される・・・

TypeScriptとは

TypeScriptはマイクロソフトが開発したオープンソースの言語、言語処理系です。
その開発には Turbo Pascal, Delphi, C# など言語や処理系の開発で有名な Anders Hejlsberg も関わっているそうです。

TypeScriptはJavaScriptにES6で導入された機能と、型宣言を追加した言語です。またその処理系は、TypeScriptを入力しJavaScriptに変換します。

型宣言により得られた情報を基に処理系内で、式や代入、関数呼び出し等でデータの型がチャックされ矛盾があればエラーになります。最終的には型情報は捨てられたJavaScriptに変換されますが、プログラムの間違いがかなりチェックされます。

TypeScriptの一番良い点は導入コストが低いこと

さらに、TypeScriptの良い点は導入コストが低いことです。言語としては JavaScriptに型宣言を追加し type , interface など型関連の文が追加された程度で Java や C# を使って来たプログラマーには学習すべきことは JavaScript(ES6) とほぼ同じです。

処理系の導入も babelを導入しているような環境なら難しくありませんし、良く使われているエディター Visual Studio Code もプラグインを入れると IDE のようにエディター上でエラーを指摘してくれます。

さらに素晴らしいのは any 型です、とりあえず変数等の型は any にすれば型エラーは消えます。導入初期に大量の工数を使ってコードを変更する必要がありません。

そして、any 型を徐々に本来の型に書き換えて行けば、TypeScriptの型チェックが働くようになり、ちょとしたコーディングミスが実行前に検出できるようになります。
また、フレームワークやライブラリーなど自分たちが作ったコードでない部分は any のままでも全く問題ありません。

また型の一部である関数の引数の数や未定義エラー等も JavaScript + ESLint より厳密にチェックされます。

このように導入コストが低いにも関わらず、高度なエラーチェックが手に入れらてるのが TypeScript の大きなメリットだと思います。

- about -

EY-Office代表取締役
・プログラマー
吉田裕美の
開発者向けブログ