Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
80 lines (57 sloc) 4.54 KB

TypeScript with Node.js

TypeScriptは、Node.jsを公式にサポートしています。素早くNode.jsプロジェクトを設定する方法は次のとおりです。

注意:これらのステップの多くは実際にはNode.jsの設定手順です

  1. Node.jsプロジェクトpackage.jsonをセットアップする。速い方法:npm init -y
  2. TypeScriptを追加する(npm install typescript --save-dev)
  3. node.d.tsを追加する(npm install @types/node --save-dev)
  4. TypeScriptの設定ファイルtsconfig.jsonをいくつかの重要なオプションを使って初期化する(npx tsc --init --rootDir src --outDir lib --esModuleInterop --resolveJsonModule --lib es6,dom --module commonjs)。

それでおしまい!あなたのIDE(例えばcode .)を起動して遊んでください。TypeScriptの安全性と開発者人間工学とあわせて、組み込みのすべてのノードモジュールを使用することができます(例:import fs = require( 'fs');)。

ボーナス: ライブコンパイル+実行

  • nodeでのライブコンパイル+実行のために使うts-nodeを追加する(npm install ts-node --save-dev)
  • ファイルが変更されるたびにts-nodeを呼び出すnodemonを追加する(npm install nodemon --save-dev)

アプリケーションのエントリポイントに基づいてscriptターゲットをpackage.jsonに追加するだけです。エントリポイントをindex.tsと仮定した場合:

  "scripts": {
    "start": "npm run build:live",
    "build:live": "nodemon --exec ./node_modules/.bin/ts-node -- ./index.ts"
  },

これで、npm startを実行し、index.tsを編集することができます:

  • nodemonはそのコマンド(ts-node)を再実行する
  • ts-nodeは自動的にtsconfig.jsonとインストールされたtypescriptバージョンを取得し、トランスパイルを行う
  • ts-nodeは出力されたjavascriptをNode.jsで実行する

TypeScriptのnode moduleを作成する

TypeScriptで書かれたモジュールを使用することは、コンパイル時の安全性とオートコンプリートが得られるので、非常に楽しいことです。

高品質のTypeScriptモジュールの作成は簡単です。以下の望ましいフォルダ構造を仮定します。

package
├─ package.json
├─ tsconfig.json
├─ src
│  ├─ All your source files
│  ├─ index.ts
│  ├─ foo.ts
│  └─ ...
└─ lib
  ├─ All your compiled files
  ├─ index.d.ts
  ├─ index.js
  ├─ foo.d.ts
  ├─ foo.js
  └─ ...
  • tsconfig.jsonについて

    • compilerOptions"outDir": "lib"と、"declaration": trueを設定します < これは宣言ファイルとjsファイルをlibフォルダに生成します
    • include:["./src / ** / *"]を設定します < これはsrcディレクトリからのすべてのファイルを対象に含めます
  • package.jsonについて

    • "main": "lib/index" <これはNode.jsにlib/index.jsをロードするように指示します   * "types": "lib/index" <これはTypeScriptにlib/index.d.tsをロードするように指示します

パッケージの例:

  • npm install typestyle for TypeStyle
  • 使用法:import { style } from 'typestyle';は、完全な型安全性を提供します

MORE:

  • あなたのパッケージが他のTypeScriptで作られたパッケージに依存している場合は、そのまま生のJSパッケージと同様にdependencies/devDependencies/ peerDependenciesに入れてください
  • パッケージが他のJavaScript作成パッケージに依存していて、プロジェクトで型安全性を使用する場合は、それらの型定義(@types/fooなど)をdevDependenciesに入れます。JavaScriptの型は、主なNPMの流れの範囲外で管理する必要があります。JavaScriptのエコシステムでは、セマンティックなバージョン管理が行われていない場合、型をあまりにも簡単に壊すので、ユーザーが型を必要とする場合は、それらに対応する@types/fooのバージョンをインストールする必要があります。

ボーナスポイント

そのようなNPMモジュールは、browserify(tsifyを使用)またはwebpack(ts-loaderを使用)でうまく動作します。