TypeScriptでNode.jsアプリを開発する

More than 3 years have passed since last update.

いい加減TypeScriptをきちんと使えるようになろうと思ったので、TypeScriptでNode.jsアプリ開発をするための方法を調べました。やることはNode.js用の型定義を使用することと、tsconfig.jsonのcompilerOptions"module": "commonjs"を指定することです。ついでにnode_modules以下のディレクトリを無視するように設定します。


前提条件


  • Node.jsがインストールされている

  • TypeScriptがインストールされている

  • typingsコマンドが使えるようになっている

Node.jsは公式サイトからインストールしてください。

TypeScriptとtypingsはNode.jsをインストールした後に下記コマンドを実行すればインストールされます。


セットアップ

npm install -g typescript

npm install -g typings


アプリケーションフォルダの準備

準備ができたらアプリケーションフォルダを作成します。場所はどこでも良いです。

作成できたら、下記ファイルを作成します。


  • MyApp.ts

  • app.ts

  • tsconfig.json

中身はそれぞれ以下のような感じにしてみました。


MyApp.ts

export class MyApp {

private name: string;
constructor() {
console.log('MyApp constructor');
console.log(`Node version : ${process.version}`);
this.name = 'MyApp';
}

exec() {
console.log(`Hello World! My name is ${this.name}.`);
}
}



app.ts

import {MyApp} from './MyApp'

let app = new MyApp();
app.exec();



tsconfig.json

{

"compilerOptions": {
"module": "commonjs"
},
"exclude": [
"node_modules"
]
}


Node.js型定義を追加

このままではNode.jsのグローバル変数processなどをコンパイラーが解釈できないので、下記コマンドでNode.jsの型定義を追加します。


セットアップ

typings install dt~node --global



TypeScriptをJavaScriptにコンパイル

Node.jsで実行できるようにTypeScriptをJavaScriptにコンパイルします。

tsc

※ちなみにコンパイルはソースコードから機械語(またはそれに準ずるコード)を生成するという意味で使われてきたため、TypeScriptのようにある言語のソースコードから別の言語のソースコードを生成することをコンパイルと区別してトランスパイルということもあります。


実行

JavaScriptのファイルができたら、通常のNode.jsアプリケーションと同じように実行します。

node app.js


出力結果

MyApp constructor

Node version : v6.1.0
Hello World! My name is MyApp.

これでNode.jsでもTypeScriptの静的型チェックを使った安心なアプリケーション開発ができますね!


補足

typings install dt~node --globalするときに--saveオプションも一緒に指定すると、typings.jsonというファイルが作成されます。このtypings.jsonファイルがあると単にtypings installとするだけで必要な型定義を全て追加することができます。

この方法だとtypingsディレクトリ以下はtypings installというコマンド一つで簡単に生成できるため、gitなどでソースコードのバージョン管理する場合にtypingsディレクトリを管理対象から外すことができます。