はじめに
この記事は、AWS CDKを覚えるにあたり、その前にAWS CDKを使ったIaCで最も使われるプログラミング言語であるTypeScriptの基礎を押さえないと行けないなと思い、触った時のメモである。
TypeScriptを動かすまででも結構な量になったので、この記事ではTypeScriptを動かすまでの初期セットアップとして、node.js・npm/npx・tsc周りまでの話を記載する。TypeScriptの言語そのものは別途記載する。
TypeScriptとは?
wikipediaのTypeScriptの説明の冒頭から拝借
TypeScript はマイクロソフトによって開発され、メンテナンスされているフリーでオープンソースのプログラミング言語である。TypeScriptはJavaScriptに対して、省略も可能な静的型付けとクラスベースオブジェクト指向を加えた厳密なスーパーセット(既存のものを全て含んだ上でより機能が拡張されている上位互換となるモノ)となっている。
TypeScriptとJavaScriptとnode.jsの関係性は?
最初はここから理解がふわっとしていたが、調べた内容を図にするとこんな感じ。
こちらのblog記事で別途まとめているのでよければ参照頂きたく。

メモ
以下、やったことと調べたことをつらつら書く。
TypeScript開発&実行環境のセットアップ
node.jsのセットアップ
まず、前提としてJavaScriptの実行環境としてnode.jsをセットアップする。
基本は、以下のnode.js公式ページの手順に従ってセットアップする。
インストール例(最新バージョンでの実行コマンドは上記リンク先を参照)
# Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash # in lieu of restarting the shell \. "$HOME/.nvm/nvm.sh" # Download and install Node.js: nvm install 22 # Verify the Node.js version: node -v # Should print "v22.14.0". nvm current # Should print "v22.14.0". # Verify npm version: npm -v # Should print "10.9.2".
ここで、node.js、nvm、npmの3つのツールがセットアップされる。この3つが何者かを一言でまとめると以下の通り。
node.js: JavaScriptの実行環境の一つnvm: node.jsのバージョン管理ツール- node.jsそのものの管理用のコマンド。最新バージョンや指定したバージョンのnode.jsをインストールしたり、複数のバージョンのnode.jsをインストールしている時に、使いたいバージョンのnode.jsを切り替えたりするのに使うコマンド。
npm: node.jsのパッケージ管理ツール- node.jsで動かすJavaScriptで作られたさまざまなパッケージを管理するためのツール。TypeScriptもnpmコマンドでこの後インストールする。
ちなみに、nvmとnpmは最初に実行するシェルでインストールし、node.js は、3つ目のnvm install 22でインストールされる。
開発用のフォルダを準備する
任意のディレクトリを用意する。ここでは、TypeScriptPracticeというディレクトリを利用する前提とする。
GitHubなどで空のリポジトリを作成してgit coneしても良い。
mkdir TypeScriptPractice && cd TypeScriptPractice && pwd
npmパッケージ管理の初期化
開発するディレクトリでnpmの初期化を行う
npm init --yes
そもそもなぜnpmの初期化を行うのか?
npmのパッケージインストール方法は以下の2種類がある。そして通常は、プロジェクト間でnpmパッケージが干渉し合わないようにするために、ローカルモードでパッケージをインストールするのが推奨ということらしい。このローカルモードでインストールする際に、「このディレクトリから独立した領域ですよ」というふうにするためにnpmの初期化を行うようである。
npmのインストールモード
ローカルモード:グローバルモード:
TypeScriptのセットアップ
typescript,@types/node,ts-nodeの3つのモジュールのインストール
npm install --save-dev typescript @types/node@22 ts-node
- TypeScriptの動作テスト
以下のコマンドを打って、tscコマンドのバージョンが表記されればTypeScriptのインストールは成功である。
npx tsc --version
インストールするパッケージの説明
| パッケージ名 | 説明 | 備考 |
|---|---|---|
| typescript | Node.jsをTypeScriptで実装するための静的型付け言語の基本的なライブラリ | |
| @types/node@node.jsバージョン | TypeScriptのためのNode.jsの型情報を提供するライブラリ | |
| ts-node | TypeScriptファイルをリアルタイムでJavaScriptにコンパイルし、利用者はコンパイルを意識せずnode.js上でTypeScriptを直接実行ように見せるためのツール | 最初はts-nodeを使わず、tscでTypsScriptからJavaScriptにコンパイルしてからnodeコマンドでJavaScriptを実行してみるとありがたみがわかる |
npm installの--save-devオプションについて
開発だけでなく本番環境でも使うパッケージなのか、開発環境だけで良いパッケージなのかを指定する。違いはpackage.jsonでDependenciesに登録されるかdevDependenciesに登録されるかが異なる。
| オプション(short) | オプション(long) | 説明 | インストール時 |
|---|---|---|---|
| -D | --save-dev | 開発環境のみで利用するパッケージの場合に指定する。この場合package.jsonには、devDependenciesのブロックにパッケージが登録される |
npm installでdevDependenciesとDependenciesの両方がインストールされる |
| -P | --save-prod | 開発環境でも利用するパッケージの場合に指定する。この場合package.jsonには、Dependenciesのブロックにパッケージが登録される |
npm install --productionでDependenciesのみインストールされる |
xpnコマンドについて
xpnは、ローカルモードでインストールしたまたはリモートのパッケージを実行するためのコマンド。
例えばTypeScriptのコードをコンパイルするtscコマンドについて、グローバルモードでインストールした場合はPATHが設定されているためプロンプトでtscと打てば実行できるが、ローカルモードでインストールした場所にはPATHがないため、そのままでは実行できない。そのため、xpnコマンドを利用して、パッケージを実行する。 npm execと同様の動きになる。
TypeScriptをとりあえず動かしてみた
前提のTypeScritp環境のセットアップ
# npmの初期化 npm init --yes # パッケージのインストール npm install --save-dev typescript @types/node@22 # tscの初期化 npx tsc --init
とりあえずTypeScriptを動かしてみる
こちらのblogの内容を参考に動かしてみた。
./ts_practice/sample1.tsに以下のスクリプトを作成
console.log("Hello! Node.js × TypeScript");
- 手動でコンパイルしてみる
npx tsc --build
- メモ
- 手動で実行してみる
node ./ts_practice/sample1.js
- 生成された
./ts_practice/sample1.jsファイルを削除する
npx tsc --build --clean
ts-nodeで実行してみる
npx ts-node ./ts_practice/sample1.ts
- ポイント
- tscコマンド、nodeコマンドを実行せず、ts-nodeコマンド一つでTypeScriptをnode.jsで実行可能
- この場合はJavaScriptにコンパイルされた
.jsファイルの書き込みは発生しない
node.jsのhttpモジュールを使って簡易httpサーバを動かしてみる
引き続き、こちらのblogの内容を参考に動かしてみた。
./ts_practice/sample2.tsに以下のスクリプトを作成
import * as http from "http"; const port = 8989; // ポート番号 // httpサーバーを設定する const server = http.createServer( (request, response) => { // サーバーにリクエストがあった時に実行される関数 response.end("Hello! Node.js with TypeScript"); } ); // サーバーを起動してリクエストを待ち受け状態にする server.listen(port); // ログを出力する console.log(`http://localhost:${port} へアクセスください`);
- 実行してみる
npx ts-node ./ts_practice/sample2.ts
- 別のターミナルを開いてアクセスしてみる
curl http://localhost:8989
npmでのTypeScriptプロジェクト管理
TypeScriptからJavaScriptへのコンパイル(ビルド)や、実行をnpmのpackage.jsonにscriptsとして登録することで、npmコマンドを介して簡単に実行することができる。
package.jsonのscriptsブロックに以下のように記載する
"scripts": { "build": "tsc --build", "clean": "tsc --build --clean", "start": "node ./ts_practice/sample2.js" },
- 実行してみる
# TypeScriptのビルド npm run build # sample2.jsの実行 npm run start # ビルドしたファイルのクリア npm run clean
どんなふうに記載すると良いのかは、node_module配下にインストールした有名なパッケージのpackage.jsonを眺めると参考になると思う。
参考
TypeScriptのセットアップ
- node.jsセットアップ
- npmによるパッケージ管理
- TypeScriptセットアップ
- TypeScriptのドキュメント
- TypeScriptのコード