C Sharpens you up

http://qiita.com/yuba に移しつつあります

Play2でTypeScriptを使う覚え書き

新規プロジェクトのためクライアントサイド開発に使うBetter JSを選定中。
2014/01/09現在の状況。

TypeScriptコンパイラの導入

TypeScriptコンパイラtscはNode.js上で実装されているので

  1. まずNode.jsをインストール http://nodejs.org/ (PATHも通す)
  2. npm install -g typescript

現時点で入るバージョンは0.9.5.0。

TypeScriptソースをJavascriptコンパイルするプラグイン play2-typescript

play2-typescriptというのが出ているものの、これは最新版(0.3.0-RC1)がMavenリポジトリに上がっていない。上がっているのは古い0.2-RC10。
つまりREADMEに書いてあるインストール方法では動かない。

バージョン番号を古く書き直すとインストール自体は成功するのだが、実行時にTypeScriptのコンパイルでこける。tscの最近のバージョンではオプション指定が変更になったため(以前は--out と書いていたオプションが--outDirになった)。

play2-typescriptを自分でビルド

play2-typescriptはSBTでビルド構成されているので

  1. まずSBTをインストール http://www.scala-sbt.org/ (PATHは勝手に通る)
  2. play2-typescriptのソースを取ってきて展開し、そのディレクトリ上でsbt publish。最終段階でMavenリポジトリにアップロードしようとしてError出すけどそれは気にしない。
  3. できあがったtarget\scala-2.10\sbt-0.13の内容をすべて【個人フォルダ】\.m2\repository\com\github\mumoshu\play2-typescript_2.10_0.13\0.3.0-RC1 にコピーする。

これで、Play2がローカルディスクからplay2-typescriptを探してくれるようになる。

使ってみる。

Play2プロジェクトのappディレクトリ内にassetsディレクトリを作って、その中にGreeter.tsを作る。

class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
    
    bye() {
        return "Bye, " + this.greeting;
    }
}

Play2アプリを起動して

Javascriptコンパイルされたものが出て来ます。

結論

TypeScript自体の良し悪しとは別次元で、導入手順的にチームに薦めにくい…
あとIntelliJ派がEclipseいやがるかも。