Node.js v23.6.0:ビルトインTypeScriptサポートがついに到来
Lukas Schneider
DevOps Engineer · Leapcell

Node.js v23.6.0は最近リリースされました。そして、重要なアップデートが付属しています。それは、--experimental-strip-types
のフラグが解除されたことです。これは、Node.jsが追加の設定なしでTypeScriptファイルをネイティブに実行できるようになったことを意味します。
TypeScriptが重要な理由
TypeScriptは、オプションの静的型付けやインターフェース、ジェネリクス、型推論などの高度な機能を導入することで、JavaScriptを強化します。長年にわたり、大規模なJavaScriptアプリケーションの事実上の標準となっています。Node.jsへのこの統合により、TypeScriptはバックエンド開発者にとってさらにアクセスしやすくなります。
Node.jsでTypeScriptを実行する
Node.jsでTypeScriptファイルを実行するには、次のように実行します。
node index.ts
.ts
ファイルに加えて、Node.jsは.mts
および.cts
ファイルもサポートしていますが、.tsx
はサポートされていません。
Node.jsがTypeScriptを実行する方法
Node.jsはswc
のバージョンを使用して型アノテーションを取り除き、実行可能なプレーンなJavaScriptコードを残します。
Node.jsでTypeScriptを実行するための考慮事項
ローカルインポートはTypeScriptファイルを参照する必要がある
バンドラーのない環境でTypeScriptを使用する場合、以前は次のようなインポートを記述していたかもしれません。
import { myFunction } from './my-module.js';
from './my-module.ts'
の代わりに
なぜでしょうか?TypeScriptコンパイラは'./my-module.js'
のようなモジュール拡張子を変更しないため、開発者はトランスパイルされたJavaScript出力に合わせた拡張子を使用する必要がありました。
ただし、Node.jsはファイル拡張子を使用してモジュールタイプを判別するため、インポートでTypeScriptファイルを明示的に参照する必要があります。
import { myFunction } from './my-module.ts';
この変更が必要なのは、Node.jsがファイル拡張子に依存してモジュールタイプを判別するためです。対照的に、TypeScriptコンパイラは以前は'./my-module.js'
のようなモジュール指定子を変更せずに残していたため、開発者はトランスパイルされた出力に適応する必要がありました。
ビルトインの型チェックはない
Node.jsは、TypeScriptファイルの実行時に型チェックを実行しません。型安全性を確保するには、TypeScriptコンパイラ(tsc
)または同様のツールをローカルで実行する必要があります。例えば:
tsc --watch
さらに、tsconfig.json
を正しく構成することは、型チェックとコーディングの一貫性を保つために重要です。
{ "compilerOptions": { "target": "esnext", "module": "nodenext", "allowImportingTsExtensions": true, "rewriteRelativeImportExtensions": true, "verbatimModuleSyntax": true } }
allowImportingTsExtensions
:.js
をインポートする代わりに、.ts
ファイルを直接インポートできるようにします。rewriteRelativeImportExtensions
:.ts
ファイルからの相対インポートを.js
ファイルからの相対インポートに書き換えます。verbatimModuleSyntax
: 型をインポートするときにtype
キーワードを使用しない場合に警告します。
型をインポートするにはtype
キーワードを使用する必要がある
型をインポートするときはtype
キーワードが必要です。そうしないと、型削除はそれらを削除しません。
// Type import import type { Item } from './my-module.ts'; // Inline type import import { myFunction, type Item } from './my-module.ts';
Node.jsでTypeScriptを実行する際の制限事項
JavaScript以外の言語機能はサポートされていません
特定のTypeScript固有の機能はサポートされていません。これには以下が含まれます:
- Enum
- 名前空間
- クラスコンストラクターのパラメータープロパティ
これらの機能を有効にするには、--experimental-transform-types
フラグを追加します。
TypeScriptによってもたらされる将来のJavaScript機能はサポートされていません
TypeScriptを使用すると、トランスパイルすることにより、今後のJavaScript機能(例えば、デコレーター)を現在のJavaScriptエンジンで実行できます。
ただし、Node.jsはTypeScript型を削除するだけなので、そのような機能はサポートされていません。
古いNode.jsバージョンはTypeScriptを実行できますか?
XのMarcoによると、TypeScriptのサポートはNode.js v22に提供されますが、v20には提供されません。
参考文献
Node.jsプロジェクトをクラウドにデプロイするための最適な選択肢であるLeapcellをご紹介します。
Leapcellは、ウェブホスティング、非同期タスク、およびRedisのための次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、またはRustで開発します。
無制限のプロジェクトを無料でデプロイ
- 使用量に対してのみ料金を支払います。リクエストも料金もかかりません。
比類のないコスト効率
- アイドル料金なしで従量課金。
- 例:25ドルで、平均応答時間60ミリ秒で694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOpsの統合。
- 実用的な洞察のためのリアルタイムのメトリックとロギング。
容易なスケーラビリティと高いパフォーマンス
- 容易に高い並行性を処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ。構築に集中するだけです。
ドキュメントで詳細をご覧ください!
Xでフォローしてください:@LeapcellHQ