2012年10月6日土曜日

FreeBSD(+node.js)でTypeScriptを使ってみる

JavaScriptコンパイル言語「TypeScript」を触ってみたかったので、VPSのFreeBSD 9.0 + node.js 0.8.8の環境にインストールしてみました。

TypeScriptとは

2012年10月2日にMicrosoftが発表した言語です。
特徴は、ざっくりというと以下の通りです。
  • オープンソース
  • 変数に型付けができる
  • JavaScriptのスーパーセット(追加要素があるがほぼJavaScript、ECMAScript 6の先取り)
  • コンパイルによりJavaScriptに変換される(=ブラウザやnode.jsで実行できる)
詳しくは、「JavaScriptを書くならTypeScriptを使え!」などの先達の記事などご覧下さい。

想像以上に使えそうな印象です。

インストール

node.jsがインストール済みならばOSの差は無く、npmでインストールできます。

# npm install -g typescript
npm http GET https://registry.npmjs.org/typescript
npm http 200 https://registry.npmjs.org/typescript
npm http GET https://registry.npmjs.org/typescript/-/typescript-0.8.0.tgz
npm http 200 https://registry.npmjs.org/typescript/-/typescript-0.8.0.tgz
/usr/local/bin/tsc -> /usr/local/lib/node_modules/typescript/bin/tsc
typescript@0.8.0 /usr/local/lib/node_modules/typescript
現時点では、0.8.0がインストールされました。
コンパイラはtscコマンドです。
※Cシェル系の場合はrehashを忘れずに
# rehash
# tsc
Syntax:   tsc [options] [file ..]
Examples: tsc hello.ts
          tsc --out foo.js foo.ts
          tsc @args.txt
Options:
  -c, --comments  Emit comments to output
  --declarations  Generates corresponding .d.ts file
  -e, --exec      Execute the script after compilation
  -h, --help      Print this message
  --module KIND   Specify module code generation: "commonjs" (default) or "amd"
  --nolib         Do not include a default lib.d.ts with global declarations
  --out FILE      Concatenate and emit output to single file
  --target VER    Specify ECMAScript target version: "ES3" (default), or "ES5"
  -w, --watch     Watch output files
  @         Insert command line options and files from a file.

Hello TypeScript.

新しい言語に挑戦するときのお約束、Hello World.をやってみます。

まずは、以下のTypeScriptのファイルをhello.tsと言う名前で作成します。

//話者クラス
class Speaker {
        constructor(public name : string) {};
        speak(message : string) {
                console.log(this.name + " > " + message);
        }
}
//タローさんに喋って貰う
var taro = new Speaker("Taro");
taro.speak("Hello, World.");
tscでJavaScriptにコンパイルします。
> tsc hello.ts
コンパイル結果としてhello.jsが生成されるのでnodeで実行します。

> node hello.js
Taro > Hello, World.

hello.jsの中身は、

var Speaker = (function () {
    function Speaker(name) {
        this.name = name;
    }
    Speaker.prototype.speak = function (message) {
        console.log(this.name + " > " + message);
    };
    return Speaker;
})();
var taro = new Speaker("Taro");
taro.speak("Hello, World.");


このようになります。
慣れ親しんだクラス型オブジェクト指向の記法でモダンJavaScriptの出力が得られるので、モダンJavaScriptの学習にも使えそうです。


コンパイルしJavaScriptを出力する言語はCoffeeScriptやDartなど色々ありますが、ECMAScript6の先取りでJavaScriptのスーパーセットという「最小限の追加」で済ましていると言う点でTypeScriptは挑戦するための心理障壁が低く感じました。
また、MicrosoftのプロジェクトということでWindows以外では使えないのではという不安もありましたが、FreeBSD+node.jsであっさりと動作している点はポイントが高いです。

まだTechnologyPreviewとのことで、今後どうなるかはまだまだ分かりませんが追っかけてみる価値が高そうです。

0 件のコメント:

コメントを投稿