🕌
【Node.js】Built-in TypeScriptへの第一歩 Type Strippingの試験的導入
概要
Node.jsのバージョン22.6.0で、新たなTypeScriptサポート機能が導入されました。
この新機能は、Node.jsがTypeScriptをbuilt-inとして扱うための第一歩として興味深いので、この機能について見ていきます。
型の削除(Type Stripping)機能とは?
ファイル名:node-ts.ts
とつけたTypeScriptのコードがあります。
このファイルをそのままNode.jsで実行すると、もちろんエラーが出ます。
node-ts.ts
type TestType = string;
const typescript: TestType = 'run-code';
console.log(typescript);
実行結果
node node-ts.ts
# 実行結果
node:internal/modules/esm/get_format:214
throw new ERR_UNKNOWN_FILE_EXTENSION(ext, filepath);
ここで新たに導入された--experimental-strip-types
フラグを使うと、
Node.jsからTypeScriptファイルを直接実行できるようになります。
実験的なオプションの警告メッセージは出るものの、文字列run-code
が出力されます。
node --experimental-strip-types node-ts.ts
# 実行結果
(node:177852) ~(実験的なオプションの警告メッセージ)
run-code
このようにフラグにより、ファイル内の型アノテーションを空白に置き換え、
型チェックを行わずにJavaScriptとしてコードを実行します。
サポートしていないTypeScriptの機能
ただなんでも出来るかというとそうではなく、
名前空間のような変換など、TypeScriptの高度な機能はまだサポートしていません。
- 名前空間 (Namespaces)
- 列挙型 (Enum)
- デコレーター (experimentalDecorators)
- パラメータプロパティ (Parameter properties)
今回のリリースにおけるスタンス
--experimental-strip-types
のオプション名にもあるように、
あくまで「実験的」であること「型の削除」に絞っているため、軽量であることを目的としています。
JavaScriptコード生成を必要とする構文をサポートせず、インライン型を空白に置き換えることで、ソースマップを必要とせずにTypeScriptコードを実行できるように設計しているようです。
この軽量な型削除に始まり、今後TypeScriptへの対応が徐々に入ってくるかもしれません。
将来的にどのように進化していくか、動向を追いかけていきます。
Discussion