2012年10月9日火曜日

JavaScriptの救世主(?)

またまたお久しぶりです。はざまです。
先日、TypeScriptというものが発表されましたね。Microsoft製の型安全なJavaScriptのスーパーセットとのことですが、ネット上ではなんだか盛り上がってるようなので、自分も軽く触った所感でも記しておこうかと思います。

まず、シンタックスについてですが、現行のECMAScriptの要項を素直にそのまま実装した感じといったところでしょうか。型指定子は後置形式ですし、関数シグニチャもHaskellやScalaのような書き方になっています。そういえば、C++11ではこれと似たような関数シグニチャの書き方も出来ましたね。
次に互換性ですが、これは全く危惧する必要は無さそうです。というのも、Typescriptは一旦コンパイルしてしまえばプレーンJavaScriptに翻訳されるようですし、公式サイトにも既存のコード資産を有効活用できる旨がしっかり明記されています。ただ当然、それらのJavaScriptで記述されたコードはTypeScriptの恩恵を受けられないのが残念なところではありますが。(と思ったら、既存のJavaScriptのコードでも型情報を追加する方法はあるみたいですね。公式サイトにはNode.jsとjQueryの例が載っていました)
さていよいよ、TypeScriptの真髄とも言える機能に焦点を当てることにします。まず、名前からも推測できるように「型」が追加されたことで、プレーンJavaScriptでは実際に動かしてみるまで全く予想がつかなかった型不一致や型誤認によるありもしないプロパティーを参照するなどの凡ミスをコンパイル時に発見できるようになり、error-proofなコードが書きやすくなっています。さらに、型の追加による恩恵はこれだけにとどまらず、プレーンJavaScriptでは、コンテキストというものがほぼ存在せず、推測するべくもなかったコード補完機能がパワーアップして使いやすくなったり、随時変数の型が確認できるようになるなど生産性の向上が見込まれます。
また、TypeScriptでは(やはり見た目だけですが)クラスベースのオブジェクト指向が使えます。プレーンJavaScriptでも、ライブラリを使用すれば多少いびつながらもひと通りのOOPはできるので、必須とは言えないかもしれませんが、コードがすっきりするのでプログラマの意図をコードに載せやすくなると言えるでしょう。
その他にもモジュールやラムダ関数(JavaScriptには標準でクロージャーがついていますが、ここでいうラムダ関数は、どうやらほぼクロージャーの糖衣構文のようです。TypeScriptの開発者がC#も開発していたとのことなので、C#のラムダ関数を思い浮かべればイメージしやすいでしょう)もサポートされているようです。
そのへんについてはこれからいろいろいじってみて、後日改めて記事にすることにしましょうか。


まだまだ開発途上のTypeScript。いずれジェネリックプログラミングもサポートするとのことなので、JavaScriptといったらTypeScriptのことを指すことになる日が来るかもしれませんね。
でもその前に、IEでのHTML5やCSS3のサポート範囲を広げてくださいよ、Microsoftさん。


参照したサイト一覧:


※こちらの記事は、あくまで所感です。もしかしたら間違った記述も含まれているかもしれないので、100%鵜呑みにはしないでください。

2 件のコメント:

  1. クラスなんかなくてもOOPは十二分にできると思いますが…
    むしろJavaScriptに無理やりクラスの概念を取り付けると歪になります
    TypeScriptも嗜好問題の範囲でしかないと思います

    返信削除
    返信
    1. 今更こんな昔のコメントに返信しても遅いでしょうが、一応補足です。
      クラスなどなくてもJavaScriptでOOPができるというのはごもっともな意見です。
      (まあ、JavaやC++で"正統"なOOPを学んだ人には不可解極まりないコードになってしまうわけですが。事実私も当初はそうでした)
      (ここから先は記事本文中にはない事柄なので後出しジャンケン的になってしまって恐縮なのですが)TypeScriptの本質は(コンパイル時までの)静的型付けの導入による凡ミスのコンパイル時検出にあると思っています。
      むしろOOPなんてのはおまけ程度でしかないでしょう。
      Webアプリが一般的になった現在、JavaScriptだけでネイティブアプリ一個分ほどのコードを書く機会も増え、チームでJavaScriptの開発をする案件も増えたようなので、そういう人達のためのツールだと思います。

      削除

なにか意見や感想、質問などがあれば、ご自由にお書きください。