Help us understand the problem. What is going on with this article?

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ディレクトリを管理対象から外すことができます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした