TypeScriptTweetTweet本日、TypeScriptのv.1.0がリリースされたというアナウンスがありました。1.0TypeScriptとは何なのか?TypeScriptは、Microsoftが2012年に発表した新しいプログラミング言語です。TypeScript僕は半年ほど前にTypeScriptを使い始め、現在運営中のサービスでも実際に導入しています。実際に使ってみて、その威力を感じているので、今回の正式リリースの発表はとても嬉しく思っています。TypeScriptは拡張JavaScript言語TypeScriptは、altJSと呼ばれる言語のひとつです。altJSというのは、JavaScriptを拡張した言語のことで、有名なのはCoffeeScriptやDartなどです。JavaScriptは、いくらか使いにくいと感じる面がある一方で、WEBブラウザで動作する唯一の言語なので使わざるをえないという問題があります。そこで、JavaScriptを拡張した言語でアプリケーションを実装し、公開前にそれをJavaScriptに変換してしまうわけです。コンパイラはnpmからインストールTypeScriptは、Nodeのパッケージ管理システムからインストールすることができます。typescriptコンパイルは、tscコマンドでおこないます。tscコマンドでコンパイルしたいTypeScriptのソースコードを指定すれば、コンパイルされたJavaScriptのソースコードが出力されます。main.tsこれで、JavaScriptのファイルが出力されるので、それをブラウザで実行するだけです。TypeScriptは、静的な型付けをもった言語TypeScriptの最大の特徴は、静的な型付けをもっていることです。'hello';ほぼJavaScriptと同じ構文ですが、変数に型の制限を加えることができます。先日オープンソース化されたFacebookの独自言語Hackも、PHPに静的な型付けを加えたものでした。オープンソース化されたFacebookの独自言語Hack静的な型付けの特徴は、コードを書いている時点で、型の誤りによる問題を警告できることです。先ほどのnumber型で宣言されている変数に、文字列を代入しようとします。'error';すると、コンパイルエラーが発生します。'number'.JavaScriptでは、オブジェクトがもっていないメソッドを呼び出すコードを書いても、実行するまで気付くことができません。TypeScriptでは、型に定義されていないメソッドを呼び出すようなコードを書けば、コンパイラが警告を出してくれます。TypeScriptは、クラスベースの言語TypeScriptのもうひとつの大きな特徴は、クラスベースの言語であるということです。JavaScriptは、プロトタイプベースなので、JavaやPHPやC++を良く使っている人間からすると、とっつきにくい面があります。オブジェクト指向のデザインパターンは、Javaなどをベースに思考されていることが多いので、プロトタイプベースに変換して実装するのはテクニックが必要です。いうわけでTypeScriptは、クラスベースに慣れた人からすると、読みやすいです。AppView();appView.render();TypeScriptとJavaScriptの変換の対応TypeScriptは、基本的にコードを、1対1の対応でJavaScriptに変換します。先ほどのAppViewクラスのコードだと次のように変換されました。AppView();appView.render();非常にシンプルな構造です。TypeScriptと良く似た性質のaltJSに、JSXがありますが、JSXは実行速度を挙げるために変換時に最適化をします。パフォーマンスを重視すると最適化は大きいですが、読みにくいコードが出力されます。TypeScriptは、そのような最適化をしない代わりに、変換後のソースコードが読みやすく、ブラウザで実行時エラーが発生した場合も原因のコードとの対応がとりやすいです。他にも色々な利点があります。altJS全般に言えることですが、JavaScriptでコードを書く時に不満に感じるようなことを解決する機能が色々と盛り込まれています。それなりの規模のJavaScriptを書くのであれば、かなり大きな恩恵を受けられることは間違いないです。TypeScriptは、JavaやPHPをやっていたプログラマからするととてもとっつきやすいので、これから広まっていくと良いなと思っています。戦わずして勝つ?孫子の兵法とは。エンジニアリング半分で頑張っています。広告業界と無関係な僕がさっぱり理解できないアドテク用語を調べた。2014年3月30日WEBアクセス解析ツールMixpanelが簡単なのに凄い。