## 概要
通常、[[TypeScript]]で書かれた[[Node.js]]プロジェクトは、[[tsc]]で[[トランスパイル]]をし、生成された[[JavaScript]]ファイルを実行する必要がある。[[ts-node]]を使うことでこのステップを省略する。
## メリットとデメリット
メリット/デメリットはハッキリしているので状況に応じて使い分けた方がいい。
- メリット
- ソースコード変更から動作確認までがシンプルで速い
- 1ステップであるため[[IDE]]の設定が楽
- デメリット
- 生成される[[JavaScript]]を確認できない
- 同じコードを連続して実行する場合に毎回[[トランスパイル]]が走る
## [[Node.js]]プロジェクトの作成
```shell
mkdir typescript-sample
cd typescript-sample
npm init -y
npm i -D typescript ts-node tslib @types/node prettier
```
`package.json`の`scripts`に`dev`を追加する。
```json:package.json
"scripts": {
"dev": "ts-node index.ts"
},
```
`index.ts`を作成する。
```ts:index.ts
function sum(x: number, y: number): number {
return x + y;
}
console.log(sum(1, 2));
```
## 実行
```shell
$ npm run dev
>
[email protected] dev C:\Users\tadashi-aikawa\tmp\typescript-sample
> ts-node index.ts
23
```
## ソースコード変更時に自動再実行
[[ts-node-dev]]を使う。
```shell
npm i -D ts-node-dev
```
`package.json`のコマンドを`tsnd`に書き換える。
```json:package.json
"scripts": {
"dev": "tsnd --respawn index.ts"
},
```
`npm run dev`で実行すると結果が表示され待機状態になる。ソースコードを変更すると自動で再実行される。
## 設定の変更
`tsconfig.json`があれば認識される。必要ならコマンドで生成する。
```shell
npx tsc --init
```