Node.js、TypeScriptの実験的サポートを追加
(github.com/nodejs)モジュール: --experimental-strip-types を追加
-
Node.jsでTypeScriptファイルを実行可能
--experimental-strip-typesフラグを設定すると、TypeScriptファイルを実行できる- Node.jsはTypeScriptソースコードをJavaScriptソースコードに変換する
- 変換過程で型チェックは行われず、型は削除される
-
動機
- TypeScriptファイルを外部依存関係やローダーなしで実行できるようにすることが重要
- ユーザーが
node foo.tsを実行できるようにしたい
-
型ストリッピングの意味
- 型ストリッピングとは、すべての型を削除して入力をJavaScriptモジュールに変換すること
- 例:
const foo: string = "foo";はconst foo = "foo";に変換される
-
@swc/wasm-typescript を選んだ理由
- シンプルだから
- 他のツールではRustやGoを追加する必要があるが、@swc/wasm-typescriptは小さなパッケージで、wasmとjsファイルだけが必要
- Denoでも使われており、信頼できる
-
制限事項
- Enum、名前空間などTypeScript専用機能は変換されない
- 拡張子なしのインポートはサポートされない
-
今後の計画
- ネイティブレイヤーで実装される可能性がある
- ソースマップ対応を追加できる可能性がある
GN⁺のまとめ
- Node.jsでTypeScriptファイルを実行できるようにする新機能について説明
- TypeScriptファイルをJavaScriptに変換して実行可能にし、型チェックは行わない
- これにより、ユーザーは外部依存関係なしでTypeScriptファイルを実行でき、開発環境を簡素化できる
- この機能は@swc/wasm-typescriptを使って実装されており、将来的にはネイティブレイヤーでの実装も検討されている
- TypeScriptとJavaScriptを混在させて使うプロジェクトに有用となる可能性がある
1件のコメント
Hacker News のコメント
TypeScript の型を取り除くことは、TypeScript の構文なしには不可能。型の除去はトークンレベルの作業ではなく、TypeScript の構文は今も変化し続けている
foo < bar & baz > ( x )は TypeScript 1.5 では異なる解釈だったNode.js が TypeScript ファイルを直接実行できるなら、TypeScript コンパイラは型を取り除いて JavaScript に変換する必要がなくなるはず
この機能がデフォルトになったら、NPM エコシステムがどう反応するのか気になる
engine: nodejs >= 25を追加してビルド工程を省くのか悩ましいNode が JS 内の型を調べられるようになれば、大きな利益になるはず
Bun の開発者体験(DX)はこの分野で前例がなく、ほとんどのユースケースを満たしている
TypeScript がとても好きで、TypeScript ランタイムをずっと待ち望んでいた
自分がいちばん好きな deno の機能が Node に直接導入される
Node にとって非常に重要な1か月だった
PR の作成者です。AMA
ずっと前にバックエンド作業で Node.js を使い始め、PHP より多くの利点があると感じた