Node.js 24 ネイティブ TypeScript
Node.js 24は、TypeScriptの使い方を変えます。ビルドステップなしで、本番環境で .ts ファイルを実行できるようになりました。
ランタイムはロード時に型注釈を削除します。TypeScriptを「注釈付きのJavaScript」として扱い、直接実行します。これにより、トランスパイルやバンドルが不要になります。
なぜこれが重要なのか:
- ソース・オブ・トゥルース(信頼できる唯一の情報源)が1つで済みます。
- dist ディレクトリの管理という複雑さを排除できます。
- 開発環境を本番環境と完全に一致させることができます。
仕組み: モジュールローダーがソーステキストをインターセプトします。インターフェース、型注釈、および型のみのインポートを削除します。残りのロジックは標準の V8 エンジン上で実行されます。変換されたコードはモジュールキャッシュに保持されるため、モジュールのロードごとに一度だけ実行されます。
知っておくべき制限事項: これはビルドパイプラインの完全な代替品ではありません。特定のタスクには依然としてツールが必要です。
- 型チェックなし:ランタイムはエラーをチェックしません。バグを検出するには、CI パイプラインで
tsc --noEmitを実行する必要があります。 - パスエイリアスなし:
tsconfig.jsonのパスマッピングはサポートされていません。 - デコレータなし:高度な変換には、依然として
esbuildのようなバンドラーが必要です。 - ランタイムの安全性なし:削除された型は、実行時の保護を一切提供しません。データのバリデーションには
Zodのようなライブラリを使用してください。
使用すべき場面: ネイティブ TypeScript は、依存関係グラフが単純なマイクロサービスに最適です。構成要素を減らすことで、デプロイの速度を向上させます。
従来のビルドを使い続けるべき場面: 強力な最適化、ツリーシェイキング、またはミニファイが必要な場合は、現在のパイプラインを維持してください。複雑なビルド要件を持つ大規模なアプリケーションでは、最適化された JavaScript バンドルを利用する方が依然としてメリットが大きいです。
セットアップ方法: スタックトレースの可読性を維持するために、source maps フラグを使用してください。
実行コマンド例:
node --enable-source-maps src/server.ts
これにより、元の TypeScript の行番号を使用してエラーをデバッグできます。