TypeScript 定義ファイルを使用した njs コードの記述

TypeScript 定義ファイルのコンパイル
API のチェックとオートコンプリート
タイプのセーフな njs コードの記述

TypeScript は JavaScript の型付けされた上位互換で、通常の JavaScript にコンパイルされます。

TypeScript は、既存の JavaScript ライブラリの型の情報を格納する定義ファイルをサポートしています。これにより、他のプログラムは、ファイルで定義された値を、静的に型付けられた TypeScript エンティティであるかのように使用できます。

njs は API に対して TypeScript 定義ファイルを用意しています。これを使用すると、次のことが可能になります。

TypeScript 定義ファイルのコンパイル

$ git clone https://github.com/nginx/njs
$ cd njs && ./configure && make ts
$ ls build/ts/
njs_core.d.ts
njs_shell.d.ts
ngx_http_js_module.d.ts
ngx_stream_js_module.d.ts

API のチェックとオートコンプリート

*.d.ts ファイルをエディターで見つけられる場所に置きます。

test.js:

/// <reference path="ngx_http_js_module.d.ts" />
/**
 * @param {NginxHTTPRequest} r
 * */
function content_handler(r) {
    r.headersOut['content-type'] = 'text/plain';
    r.return(200, "Hello");
}

タイプのセーフな njs コードの記述

test.ts:

/// <reference path="ngx_http_js_module.d.ts" />
function content_handler(r: NginxHTTPRequest) {
    r.headersOut['content-type'] = 'text/plain';
    r.return(200, "Hello from TypeScript");
}

TypeScript のインストール

# npm install -g typescript

TypeScript のコンパイル

$ tsc test.ts
$ cat test.js

生成された test.js ファイルは、njs で直接使用できます。