2019.10.18
node.jsのプロジェクトでも型の恩恵を受けるためにTypeScriptを使いたいと思うことが多いです。ts-node
を使ってExpress
の環境構築をしてみました。
普通にTypeScriptをコンパイルしてjsを吐き出してそれを実行する方法でもいいですが、TypeScriptを使ったnode.jsの実行環境としてts-node
があるのでそれを使ってみます。トランスパイルなしにTypeScriptを実行できます。
GitHub - TypeStrong/ts-node: TypeScript execution and REPL for node.js
typescript
と型定義モジュールも一緒にインストールします。
npm i -D ts-node typescript @types/node
index.ts
を下記のように書いてnpx ts-node index.ts
で実行できます。
function hello(name: string): string {
return `Hello, ${name}!`;
}
console.log(hello("TypeScript"));
ts-node
はソースを変更したら再度実行し直さないといけません。ts-node-dev
にはソースの変更を検知して再起動できるオプションがあります。
GitHub - whitecolor/ts-node-dev: Compiles your TS app and restarts when files are modified.
npm i -D ts-node-dev
--respawn
をつけることによってホットリロードできるようになります。これで開発しやすくなりました。
npx ts-node-dev --respawn index.ts
package.json
に下記のようにコマンドを追加しておけば便利です。
"scripts": {
"dev": "ts-node index.ts",
"dev:watch": "ts-node-dev --respawn index.ts",
}
--respawn
をつけるとホットリロードのたびに通知が飛んでくるようになります。
.node-dev.json
を作成し下記のプロパティを追加しておきます。これで通知が飛んでこなくなります。
{
"notify": false
}
node.jsのフレームワークとしては一番有名なのではないでしょうか。
Express - Node.js Web アプリケーション・フレームワーク
インストール。
npm i express
型定義モジュールのインストール。
npm i -D @types/express
index.ts
をこんな感じで書き換えます。単純にh1
タグを返すだけのサーバです。
import express from "express";
const app = express();
const PORT = process.env.PORT || 8080;
app.get("/", (_req, res) => {
res.send(`
<h1>TypeScript Express</h1>
`);
});
app.listen(PORT, () => {
console.log(`Server listening on port ${PORT}...`);
});
これでts-node-dev
を実行してみるとサーバが立ち上がります。curl
を実行するとh1
タグが返ってくるのがわかります。
curl http://localhost:8080/
<h1>TypeScript Express</h1>