Node.jsでTypeScriptを直接実行する:node app.tsの使い方

スポンサーリンク

Node.jsでTypeScriptを直接実行する:node app.tsの使い方

Node.js 22.6 以降、TypeScript ファイルをコンパイルなしで直接実行できます。tscts-node をインストールしなくても node app.ts が動きます。


バージョンと対応状況

Node.js バージョン 状態 実行方法
v22.6 〜 v22.x 実験的 node --experimental-strip-types app.ts
v23.0 以降 フラグ不要 node app.ts
v24.x(現在の LTS) フラグ不要 node app.ts

Node.js 23 以降はフラグなしで node app.ts が動きます。


基本的な使い方

// app.ts
const greet = (name: string): string => {
  return `Hello, ${name}!`
}

console.log(greet('World'))
node app.ts
# Hello, World!

型注釈が含まれていても問題なく実行されます。


仕組み:型を「剥がす」だけ

Node.js は TypeScript をコンパイルせず、型注釈を取り除いて(strip) JavaScript として実行します。そのため:

  • 型チェックは行われない(エラーがあっても実行される)
  • tsc のような変換処理はない
  • 実行速度は通常の JS とほぼ同じ

型チェックが必要な場合は別途 tsc --noEmit を実行します。


使えない構文

型を「剥がす」だけの実装のため、TypeScript 固有の値を生成する構文は使えません。

// ❌ enum はエラー(値を生成するため非サポート)
enum Direction {
  Up,
  Down,
}
// ✅ interface・type・import type は使える
interface User {
  name: string
  age: number
}

import type { Readable } from 'stream'
構文 使える?
interface / type
import type
型注釈(: string など)
as 型アサーション
enum
namespace
const enum

ts-node・tsx との違い

ツール コンパイル 型チェック インストール
node(v23+) なし(strip) なし 不要
ts-node あり(tsc) あり 必要
tsx あり(esbuild) なし 必要

スクリプトや簡単なCLIツールなら node app.ts で十分です。型チェックが必要なプロジェクトでは ts-node または tsx + tsc --noEmit の組み合わせが適しています。


まとめ

  • Node.js 22.6+ で TypeScript ファイルをそのまま実行できる
  • Node.js 23 以降はフラグ不要。node app.ts だけで動く
  • 型を「剥がす」だけなので型チェックは行われない
  • enum / namespace など値を生成する構文は非サポート
  • スクリプト・CLIツールの用途に向いている

関連記事:Node.js 24のnode:sqlite入門:npmインストールなしでSQLiteを使う