TypeScript をネイティブで実行する

v22.18.0 以降、Node.js はデフォルトで「型ストリッピング」を有効にします。v22.18.0 以降を使用しており、ソースコードに 削除可能な TypeScript 構文 のみが含まれている場合、この記事は必要ありません。

Node.js で TypeScript コードを実行する

V22.6.0 以降、Node.js は「型ストリッピング」を介して一部の TypeScript 構文を実験的にサポートしています。これにより、トランスパイルすることなく、有効な TypeScript コードを Node.js で直接記述できます。

--experimental-strip-types フラグは、Node.js に対して、実行前に TypeScript コードから型注釈を取り除くように指示します。

node --experimental-strip-types example.ts

以上です! これで、最初にトランスパイルすることなく TypeScript コードを Node.js で直接実行し、型に関連するエラーを TypeScript でキャッチできるようになりました。

V22.7.0 では、この実験的なサポートが拡張され、--experimental-transform-types フラグが追加されたことで、enumnamespace のような TypeScript 独自の構文も変換されるようになりました。--experimental-transform-types を有効にすると、自動的に --experimental-strip-types が有効になるため、同じコマンドで両方のフラグを使用する必要はありません。

node --experimental-transform-types another-example.ts

v22.18.0 以降では、型ストリッピングがデフォルトで有効になります(--no-experimental-strip-types で無効化できます)。これにより、サポートされている構文を実行できるようになり、以下のようなファイルを node file.ts で実行することがサポートされます。

function (: number): string {
  return 'hello';
}

ただし、以下のコードのように変換が必要なコードを実行するには、引き続き --experimental-transform-types の使用が必要です。

enum  {
  ,
  ,
}

.(.);

制限事項

執筆時点では、Node.js における TypeScript の実験的サポートにはいくつかの制限があります。

詳細については API ドキュメント をご覧ください。

設定

Node.js の TypeScript ローダー(Amaro)は、TypeScript コードの実行に tsconfig.json を必要とせず、使用もしません。

こちら に記載されている compilerOptions を使って tsconfig.json を作成し、Node.js の挙動を反映するようにエディターと tsc を設定することをお勧めします。また、TypeScript のバージョンは 5.7 以降 を使用してください。

重要な注意点

この機能の実現に貢献してくださったすべてのコントリビューターに感謝します。この機能が安定し、近いうちに Node.js の LTS バージョンで利用可能になることを願っています。

この機能が実験的であり、いくつかの制限があることをご理解ください。もしそれがあなたのユースケースに合わない場合は、他のツールを使用するか、修正をコントリビュートしてください。バグ報告も歓迎しますが、このプロジェクトはボランティアによって運営されており、いかなる種類の保証もないことを念頭に置いてください。もしご自身で修正をコントリビュートできない場合は、気長にお待ちください。