ごった煮

色々な事を書いてます

サーバサイドTypeScript

今まで, TypeScriptの入門的な内容を紹介しました.

そこで今回は, 少し発展的な内容としてNode.jsとTypeScriptを組み合わせてサーバサイドJavaScriptをTypeScriptで扱う方法を説明します.

Node.jsは, ここ から環境毎に必要なものを導入してください.

今回は, コマンドラインからTypeScriptおよびNode.jsを扱うので, TypeScriptの扱い方は以前の記事を参照してください.

前準備

TypeScriptでは, requireをいきなり使おうとするとエラーが出ます.

この問題の解決策として

[javascript] declare function require(x: string): any; [/javascript]

をファイルの先頭に追加してrequireの宣言を追加しておきます.

これで, requireを問題なく使用することができます.

実際にやってみる

まずは, TypeScriptのコードを示します.

[javascript] class NodeConnect{ sys = require('sys'); http = require('http'); constructor(); constructor() { var server = this.http.createServer(this.connection); server.listen(8080); console.log('Server start'); } connection(request, response): void{ response.writeHead(200, { 'Content-Type': 'text/plain' }); response.write('Hello Worldn'); response.end(); } } var node = new NodeConnect(); [/javascript]

NodeConnectクラスのコンストラクタで, Nodeのサーバインスタンスを生成し, 8080番ポートでサーバを起動しています.

また, 応答用関数をconnectionとして別に作成して渡しています.

最後にクラス外でNodeConectのインスタンスを生成すると, サーバが動作を開始します.

このコードを保存して,

tsc ファイル名.ts

node ファイル名.js

で起動させ, http://127.0.0.1:8080/ にアクセスすると, 画面にHelloWorldと表示されるはずです.

では, JavaScriptに変換されたコードを見てみましょう.

[javascript] var nodeConnect = (function () { function nodeConnect() { this.sys = require('sys'); this.http = require('http'); var server = this.http.createServer(this.connection); server.listen(8080); console.log('Server start'); } nodeConnect.prototype.connection = function (request, response) { response.writeHead(200, { 'Content-Type': 'text/plain' }); response.write('Hello Worldn'); response.end(); }; return nodeConnect; })(); var node = new nodeConnect(); [/javascript]

この程度の長さでは, あまり変化はないように見えますが, 比較的TypeScriptで記述されたほうが見やすく感じます.

TypeScriptでも, Node.jsを使用するハードルはかなり低くなっています.

サーバサイドのコードは, クライアントサイドと比較して保守の観点からより可読性の高いコードを書く必要があります.

そのため, サーバサイドにTypeScriptを採用するのは, 非常に有用ではないでしょうか.